Ошибка входа в Google com.гуглить.андроид.СБМ.общий.прикладной программный интерфейс.ApiException: 10:

поэтому я застрял на этой неприятной проблеме. Я совершенно новичок в Google Auth на Firebase, но я сделал все документы firebase, проинструктированные о том, как интегрировать аутентификацию Google SignIn, но я все еще получаю эту странную ошибку в консоли, состоящую из двух частей:

12-03 11:07:40.090 2574-3478/com.google.android.gms E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE

и

Google sign in failed com.google.android.gms.common.api.ApiException: 10:

прежде чем кто-либо попытается указать на подобные вопросы, которые ранее задавались при переполнении стека, вот что я сделал до сих пор после того, как увидел все доступные решения и еще не разрешили ошибку

  • у меня есть отпечаток пальца SHA1 для моего проекта
  • у меня есть мой идентификатор клиента OAuth 2.0, как идентификатор клиента android, так и веб-клиент, и в requestIdToken () я поставил веб-ID клиента.
  • я не опубликовать APK моего проекта в google play store. это означает, что я не случайно создал еще один отпечаток SHA1.
  • я следовал шаг за шагом вход Google в документы Auth firebase.

вот мой фрагмент кода:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);
    ButterKnife.bind(this);

    String webClientId = getString(R.string.web_client_id);


    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(webClientId)
            .build();

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);


    GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);


    googleLoginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent signInIntent = mGoogleSignInClient.getSignInIntent();
            startActivityForResult(signInIntent, RC_SIGN_IN);
        }
    });

}



@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        // The Task returned from this call is always completed, no need to attach
        // a listener.
        Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);

        try{

            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);
            // [START_EXCLUDE]
            Toast.makeText(this, "Gooogle Auth failed", Toast.LENGTH_LONG);
            // [END_EXCLUDE]
        }

    }
}



private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
    // [START_EXCLUDE silent]
    //showProgressDialog();
    // [END_EXCLUDE]

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        Toast.makeText(LoginActivity.this, "Successful Auth", Toast.LENGTH_LONG).show();
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                        Toast.makeText(LoginActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        //updateUI(null);
                    }

                    // [START_EXCLUDE]
                    //hideProgressDialog();
                    // [END_EXCLUDE]
                }
            });
}

2 ответов


в основном проблема в SHA1 ключ положенный на консоль пожалуйста регенерирует его и кладет снова как следует такой же проект.

1) в качестве ответов убедитесь, что ваш фактический подписанный Android apk же SHA1 отпечаток пальца как то, что вы указали в консоли раздела интеграции Android вашего проекта Firebase (страница, на которой вы можете скачать google-services.json)

2) поверх этого перейдите в Настройки вашего проекта firebase (значок шестеренки справа от обзора на верхняя левая область. Затем перейдите на вкладку привязка учетной записи. На этой вкладке свяжите Google Play с вашим проектом.


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

  • Если вы все еще находитесь в дебютном режиме, используйте debug.хранилище в SHA1
  • используйте только выпуск SHA1, если вы находитесь на производстве режим

https://developer.android.com/studio/publish/app-signing.html