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

iqjalb3h  于 2023-02-13  发布在  其他
关注(0)|答案(3)|浏览(112)

在我的Android应用程序中,我使用Google登录通过Firebase AuthUI登录。这部分工作正常。现在我尝试使用IdToken登录,但我总是收到以下错误消息:
运行时执行异常:网站。谷歌。防火墙。认证。防火墙认证无效证书异常:提供的身份验证凭据格式错误或已过期。[IdP响应中的id_token无效:第三十章]
这可以正常工作,并成功登录到我的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()));

            });
        }
    }
}

我正在关注this tutorial,我的目标是登录多个Firebase项目。
尝试使用上述IdToken中的凭据登录辅助Firebase项目时,会返回相同的错误。

FirebaseApp app = FirebaseApp.getInstance("secondary");
FirebaseAuth.getInstance(app).signInWithCredential(credential);
bksxznpy

bksxznpy1#

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

jgovgodb

jgovgodb2#

我建议您尝试更新firebase auth插件或谷歌登录插件

8zzbczxx

8zzbczxx3#

我在Flutter中开发应用程序时遇到了这个问题。我的设备上设置了正确的时区,但我面临着这个问题。
原因是由于一个明显的错误。我没有添加到我的信息。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 -->

官方文档链接为here

相关问题