Внутренняя Ошибка Входа в службы Google Play (Xamarin)

#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 получать запросы от клиента выпуска, а не отладочного?

Я действительно борюсь с тем, что делать сейчас, и я потратил целую вечность, пытаясь заставить это работать. Я чувствую, что перепробовал все. Любая помощь будет очень признательна.