提供的身份验证凭据格式不正确或已过期

Hug*_*ugo 6 android firebase firebase-authentication firebaseui

在我的 Android 应用程序中,我使用 Google 登录通过 Firebase AuthUI 登录。这部分有效。现在我尝试使用 登录,IdToken但我总是收到此错误消息:

com.google.android.gms.tasks.RuntimeExecutionException:com.google.firebase.auth.FirebaseAuthInvalidCredentialsException:提供的身份验证凭据格式错误或已过期。[IdP 响应中的无效 id_token: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);
}
Run Code Online (Sandbox Code Playgroud)

但是尝试使用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()));

            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在学习本教程,我的目标是登录多个 Firebase 项目。

尝试使用来自上述 IdToken 的凭据登录到辅助 Firebase 项目会返回相同的错误。

FirebaseApp app = FirebaseApp.getInstance("secondary");
FirebaseAuth.getInstance(app).signInWithCredential(credential);
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 6

当设备上的时间或时区错误时,我收到此错误。设置正确的时间解决了它。

  • 事实上,检查你的时区,重新启动你的手机,它实际上可能会修复它 (2认同)
  • 重新启动模拟器更新了时间并修复了错误。 (2认同)

Ore*_*rin 0

我建议您尝试更新 firebase auth 插件或 google Sign in 插件