Firestore — Facebook неверный код подписи токена доступа OAuth 190

#android #firebase-authentication #facebook-login

#Android #firebase-аутентификация #facebook-вход в систему

Вопрос:

Я пытаюсь включить facebook login в моем приложении для Android. Но, несмотря на то, что я следил за документами в firebase и facebook, я все еще не мог этого сделать. Когда я нажимаю кнопку входа facebook выдает мне следующую ошибку:

com.google.firebase.auth.Исключение FirebaseAuthInvalidCredentialsException: предоставленные учетные данные для авторизации неверно сформированы или срок их действия истек. [Неудачный ответ debug_token от Facebook: {«ошибка»:{«сообщение»: «Недопустимая подпись токена доступа OAuth.», «тип»: «OAuthException», «код»: 190, «fbtrace_id»: «ENYy8qUQd C»}} ]

Я зарегистрировал developers.facebook, передал свой идентификатор приложения и секрет приложения в часть аутентификации firebase. После того, как я включил свой keyhash и действительный URI перенаправления OAuth, все еще не могу преодолеть эту проблему. Вот мои коды в Android;

в oncreate;

     mCallbackManager = CallbackManager.Factory.create();
    loginButton = findViewById(R.id.facebook_login);
    loginButton.setReadPermissions("email");

    loginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            signFb();
        }
    });
  

После oncreate у меня есть этот метод для обратного вызова registerCallback.

 private void signFb()
{
    loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            handleFacebookAccessToken(loginResult.getAccessToken());
        }

        @Override
        public void onCancel() {
            Log.d("aa", "facebook:onCancel");
            // ...
        }

        @Override
        public void onError(FacebookException error) {
            Log.d("aa", "facebook:onError", error);
            Log.d("ere", error.toString());
        }
    });
}



private void handleFacebookAccessToken(AccessToken token) {
    Log.d("asdfgb", "handleFacebookAccessToken:"   token);

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    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
                        FirebaseUser user = mAuth.getCurrentUser();
                        Log.d("esgfsgdvcxz ", "onComplete: ASFDSGBHSF");
                        if(user != null) {
                            Intent intent = new Intent(ActivityLogin.this, MainFragmentActivity.class);
                            startActivity(intent);
                            finish();
                            return;
                        }
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w("asd", "signInWithCredential:failure", task.getException());
                    }

                    // ...
                }
            });
}

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

    // Pass the activity result back to the Facebook SDK
    mCallbackManager.onActivityResult(requestCode, resultCode, data);
}
  

Спасибо. Я не думаю, что проблема в коде, хотя.
Потому что появляется фрагмент facebook, и я могу нажать продолжить. Но после этого я не могу продолжать.

Ответ №1:

Решена моя проблема. Я часами безостановочно кодировал, и со всеми этими вкладками Chrome я понял, что забыл нажать «Сохранить» на вкладке аутентификации firebase после того, как вставил идентификатор приложения и т.д. Хорошие дни для кодирования.

Ответ №2:

Зайдите в свою firebase и перейдите в firebase auth и там включите facebook auth, затем перейдите в rule и дайте разрешение на чтение и исправление