Android 提供的身份验证凭据格式不正确或已过期
在我的Android应用程序中,我使用谷歌登录通过Firebase AuthUI登录。那部分有效。现在我尝试使用Android 提供的身份验证凭据格式不正确或已过期,android,firebase,firebase-authentication,firebaseui,Android,Firebase,Firebase Authentication,Firebaseui,在我的Android应用程序中,我使用谷歌登录通过Firebase AuthUI登录。那部分有效。现在我尝试使用IdToken登录,但总是收到以下错误消息: com.google.android.gms.tasks.RuntimeExecutionException: com.google.firebase.auth.FirebaseAuthInvalidCredentialsException:提供的身份验证凭据格式错误或已过期。[IdP响应中的无效id_令牌:XXXXXXX…] 这将在我的F
IdToken
登录,但总是收到以下错误消息:
com.google.android.gms.tasks.RuntimeExecutionException:
com.google.firebase.auth.FirebaseAuthInvalidCredentialsException:提供的身份验证凭据格式错误或已过期。[IdP响应中的无效id_令牌: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);
}
但是尝试使用IdToken
创建的凭据使用withcredential登录时,会出现上述错误:
@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项目
尝试使用上述IdToken中的凭据登录到辅助Firebase项目会返回相同的错误
FirebaseApp app = FirebaseApp.getInstance("secondary");
FirebaseAuth.getInstance(app).signInWithCredential(credential);
我建议您尝试更新firebase auth插件或google登录插件当设备上的时间或时区错误时,我出现此错误。
设置正确的时间解决了问题。谢谢!这帮了大忙。我在用设备时间设置做一些测试。没想到这会影响我的身份验证。请检查您的日期和时间