在我的 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);
}
但是尝试使用从IdToken
制作的凭据来使用signInWithCredential
会给我上面的错误:
@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身份验证插件或Google登录插件
我在 Flutter 中开发应用程序时遇到了这个问题。我的设备上设置了正确的时区,但我遇到了这个问题。
原因是由于一个明显的错误。我没有将其添加到我的 info.plist 中
<!-- Put me in the [my_project]/ios/Runner/Info.plist file -->
<!-- Google Sign-in Section -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<!-- TODO Replace this value: -->
<!-- Copied from GoogleService-Info.plist key REVERSED_CLIENT_ID -->
<string>com.googleusercontent.apps.861823949799-vc35cprkp249096uujjn0vvnmcvjppkn</string>
</array>
</dict>
</array>
<!-- End of the Google Sign-in Section -->
官方文档链接在这里