Предоставленные идентификационные данные неверны или устарели - PullRequest
2 голосов
/ 21 января 2020

В моем приложении Android я вхожу через Firebase AuthUI с помощью входа в Google. Эта часть работает. Теперь я попытался войти с помощью IdToken, но всегда получаю следующее сообщение об ошибке:

com.google. android .gms.tasks.RuntimeExecutionException: com.google.firebase.auth. FirebaseAuthInvalidCredentialsException: предоставленные учетные данные авторизации искажены или истек срок их действия. [Неверный id_token в ответе IdP: XXXXXXX ...]

Это работает и успешно регистрирует меня в моем проекте Firebase:

@OnClick(R.id.sign_in)
public void signIn() {
    startActivityForResult(
            AuthUI.getInstance().createSignInIntentBuilder()
                    .setTheme(getSelectedTheme())
                    .setLogo(getSelectedLogo())
                    .setAvailableProviders(getSelectedProviders())
                    .setTosAndPrivacyPolicyUrls(getSelectedTosUrl(),getSelectedPrivacyPolicyUrl())
                    .setIsSmartLockEnabled(true,
                            true)
                    .build(),
            RC_SIGN_IN);
}

Но я пытаюсь использовать signInWithCredential, используя учетные данные, полученные из IdToken, дают мне сообщение об ошибке выше:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        handleSignInResponse(resultCode, data);
        return;
    }

}

@MainThread
private void handleSignInResponse(int resultCode, Intent data) {
    IdpResponse response = IdpResponse.fromResultIntent(data);

    if (resultCode == RESULT_OK) {
        FirebaseAuth auth = FirebaseAuth.getInstance();
        FirebaseUser firebaseUser = auth.getCurrentUser();

        if(firebaseUser != null){

            auth.getCurrentUser().getIdToken(true).addOnCompleteListener(task -> {

                String idToken = task.getResult().getToken();
                AuthCredential cred = GoogleAuthProvider.getCredential(idToken ,null);

                auth.signInWithCredential(cred).addOnCompleteListener(task1 -> 
                        Log.v(TAG,"results: " + task1.getResult()));

            });
        }
    }
}

Я следую этому учебному пособию , и моя цель - войти в несколько проектов Firebase.

Попытка войти во вторичный проект Firebase с использованием учетных данных из IdToken выше возвращает ту же ошибку.

FirebaseApp app = FirebaseApp.getInstance("secondary");
FirebaseAuth.getInstance(app).signInWithCredential(credential);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...