Я пытаюсь войти в Google Play Games. Это код:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestServerAuthCode(getString(R.string.default_web_client_id))
.build();
googleSignInClient = GoogleSignIn.getClient(this, gso);
Я запускаю GoogleSignInActivity с помощью этого кода:
@Override
public void onClick(View view) {
Intent intent = googleSignInClient.getSignInIntent();
startActivityForResult(intent, SIGN_IN_CODE);
}
});
А затем он возвращается сюда:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SIGN_IN_CODE){
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
// Google Sign In was successful, authenticate with Firebase
GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account);
} catch (ApiException e) {
// Google Sign In failed, update UI appropriately
Log.w(TAG, "Google sign in failed", e);
updateUI(null);
}
}
}
Итак, в этой строке:
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
Я получаю такую ошибку:
Google sign in failed: com.google.android.gms.common.api.ApiException: 12501
Нет никаких ошибок с сертификатом SHA1, потому что я генерировал его много раз и вставлял в консоль Firebase, также у меня есть эти разрешения в файле манифеста:
<uses-permission android:name = "android.permission.INTERNET"></uses-permission>
<uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE"></uses-permission>
Любая часть моего кода устарела. Я использую последние зависимости:
implementation 'com.google.firebase:firebase-auth:15.0.0'
implementation 'com.google.firebase:firebase-core:15.0.0'
implementation 'com.google.android.gms:play-services-auth:15.0.0'
Я прочитал всю возможную документацию. Я так отчаянно с этим справляюсь, почти неделю с этой проблемой ...
Да, я это уже сделал. Проблема в том, что я не вхожу в систему с помощью Google, я вхожу в систему с помощью Google Play Games. Итак, я создал идентификатор клиента Android OAuth 2.0 и снова сгенерировал файл google-service.json. Затем я включил вход в Play Games в консоли Firebase и создал идентификатор веб-клиента OAuth 2.0 с секретным клиентом bla bla bla ... Я снова сгенерировал файл google-services.json и поместил в папку приложения, а затем я получил та ошибка Google sign in failed: com.google.android.gms.common.api.ApiException: 12501
странно, значит, вы связали свой проект Firebase со своей учетной записью издателя игры и занесли в белый список адрес электронной почты, который вы используете?
да. Кажется, у меня есть все, что мне нужно. однако ошибка сохраняется ...
Изменять
GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN
к
GoogleSignInOptions.DEFAULT_SIGN_IN
Пожалуйста, предоставьте более описательный контекст вашего ответа, чтобы лучше понять разницу.
Попробуйте проверить этот Firebase AuthDemo: сначала включите Google Sign-in в Firebase Console, во-вторых, вы должны создать ключ отладки SHA1 и добавить его в консоль Firebase (что вы уже сделали), в-третьих, создайте идентификатор клиента OAuth 2.0 для Android и, наконец, получите сгенерированный google-сервис. json из консоли Firebase и поместите в папку приложения. Надеюсь это поможет.