PlayGamesAuthProvider генерирует неправильные учетные данные? - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь использовать службы входа в PlayGames из своего приложения с firebase, но когда я это делаю, всегда появляется эта ошибка:

"com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: предоставленоУчетные данные auth неверны или устарели. "

Я попытался:

1 - проверьте, работает ли другой метод входа, и да, вход в систему с учетной записью службы Google работает очень хорошо.учетная запись появляется в пользовательском разделе firebase.

2-Я проверил код ошибки "ERROR_INVALID_CREDENTIAL", чтобы найти какое-то объяснение.но единственная информация, найденная мной, та же самая, что и в исключении.

Ошибка исключения:

Предоставленные учетные данные аутентификации неверны или устарели.[Не удалось получить ресурс из https://www.googleapis.com/games/v1/players/me, http-статуса: 403, http-ответ: {"error": {"errors": [{"domain": "global", "reason": "запрещено", "message"":" Forbidden "}]," code ": 403," message ":>" Forbidden "}}]

Я понимаю, что ошибка 403 - это просто отказ в регистрации, вызванный неверно сформированными учетными данными.

3-Я сгенерировал подписанный APK, чтобы проверить, отклоняет ли googleGames мои входы в систему, потому что я тестировал со своего устройства с помощью отладчика Android.но ошибка сохраняется с подписанным apk, установленным на моем устройстве.

4- Я проверил, истек ли срок действия ключа, предоставленного сервером (1 строка перед отправкой учетных данных), и функция вернула «false»."acct.isExpired ()"

5- Я поставил точку останова, чтобы проверить, правильно ли "учетные данные" получают AuthCode, и да, ключ полностью там.

6-в console.developer.google.com, и у меня есть 40 запросов от моего проекта на API Google Play Game Services со 100% ошибками.В другом API IdentityToolKit у меня ошибка 0% при 70 вызовах.

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestServerAuthCode("xxx.apps.googleusercontent.com",true)
            .build();


    GoogleSignInClient signInClient = GoogleSignIn.getClient(this,gso);
    Intent intent = signInClient.getSignInIntent();
    startActivityForResult(intent, RC_SIGN_IN);

}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {
            // Google Sign In was successful, authenticate with Firebase
            GoogleSignInAccount account = task.getResult(ApiException.class);
            firebaseAuthWithPlayGames(account);
        } catch (ApiException e) {
            // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e);
        }
    }
}

private void firebaseAuthWithPlayGames(GoogleSignInAccount acct) {
    mAuth = FirebaseAuth.getInstance();
    FirebaseUser currentUser = mAuth.getCurrentUser();
    AuthCredential credential = PlayGamesAuthProvider.getCredential(acct.getServerAuthCode());
Log.d(TAG, "firebaseAuthWithPlayGames4:" + acct.isExpired());
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                    } else {
//here get the exception error always
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                        Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show();
                    }
                }
            });
}

что означает уродство?Как я могу сделать правильно сформированные учетные данные?Мне нужно добавить дополнительную информацию к учетным данным? Мне не хватало какой-либо конфигурации в Firebase или консоли разработчика?

...