#android #xamarin #xamarin.android #google-play-services #google-play-games
Вопрос:
Я не могу заставить свое приложение Xamarin для Android (Visual Studio / C#) войти в систему с помощью служб Google Play, что всегда приводит к внутренней ошибке:
Status{statusCode=INTERNAL_ERROR, resolution=null}
Тем не менее, я могу заставить работать последнюю учетную запись, вошедшую в систему.
Чтобы получить последнюю учетную запись, я использую следующий код:
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultGamesSignIn)
.RequestId()
.RequestProfile()
.RequestScopes(GamesClass.ScopeGamesSnapshots)
.Build();
GoogleSignInAccount account = GoogleSignIn.GetLastSignedInAccount(this);
if (GoogleSignIn.HasPermissions(account, signInOptions.GetScopeArray()))
{
GoogleSignInAccount signedInAccount = account;
GamesClass.GetGamesClient(this, signedInAccount).SetViewForPopups(layout);
GamesClass.GetPlayersClient(this, signedInAccount).GetCurrentPlayer();
GamesClass.GetSnapshotsClient(this, signedInAccount);
}
Это приведет к появлению последней учетной записи, вошедшей в систему под моим именем пользователя. Однако любые запросы на вход с использованием приведенного ниже кода приводят к внутренней ошибке:
GoogleSignInOptions signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DefaultGamesSignIn)
.RequestId()
.RequestProfile()
.RequestScopes(GamesClass.ScopeGamesSnapshots)
.Build();
GoogleSignInClient signInClient = GoogleSignIn.GetClient(this, signInOptions);
Intent intent = signInClient.SignInIntent;
StartActivityForResult(intent, RC_SIGN_IN);
GoogleSignInResult result = Auth.GoogleSignInApi.GetSignInResultFromIntent(intent);
Я считаю, что выполнил все шаги, описанные в документации Google, включая:
- Создание и связывание 2 учетных данных в консоли Google Play и Консоли разработчика Google, один из которых использует SHA-1 для выпуска, а другой-SHA-1 для отладки, полученный из моего проекта
- Добавление моей электронной почты в качестве тестера в консоль Google Play
- Публикация сервисов Google Play
- Создание экрана согласия OAuth и заполнение сведений
- Adding the client ID and app ID to Strings.xml and AndroidManifest.xml
- Ensuring the package name matches up
РЕДАКТИРОВАТЬ: Одна вещь, которую я заметил, заключается в том, что при просмотре облачной платформы Google в разделе «Метрики» игровых сервисов Google Play именно клиент Debug OAuth получает запросы, даже если я использую версию выпуска своего приложения и запрашиваю идентификатор клиента выпуска через API (я проверил это в три раза). Как я могу заставить службы Google Play получать запросы от клиента выпуска, а не отладочного?
Я действительно борюсь с тем, что делать сейчас, и я потратил целую вечность, пытаясь заставить это работать. Я чувствую, что перепробовал все. Любая помощь будет очень признательна.