找不到服务器配置中的 Firebase 不断抛出 OAuth2 客户端 ID

Firebase keeps throwing OAuth2 client id in server configuration is not found

我正在尝试使用 Firebase 将我的 Google 用户登录到我的应用程序,但每次我使用以下方法时,我都会收到此错误:An internal error has occured. [ OAuth2 client id in server configuration is not found. ]。我已经从开发人员控制台获得了我的客户端 ID 密钥,并且我正在使用 Web 客户端 ID,而不是我的请求令牌中的 Android。有什么想法吗?

这是我的代码:

  private void firebaseAuthWithGoogle(final GoogleSignInAccount acct) {

        final AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
        mAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {


                        if (!task.isSuccessful()) {

                            Toast.makeText(Login.this, "Oops, something went wrong with your login.  Please try again.",
                                    Toast.LENGTH_SHORT).show();

                        }

                        else{


                            Intent i = new Intent(Login.this, FindOpp.class);
                            startActivity(i);
                        }

                    }
                });
    }

Firebase 的默认配置使用从 firebase 控制台(而非云控制台)发出的 services.json。当您在 Firebase 控制台上创建项目时,Oauth 设置会自动配置,因此 您不应使用您手动创建的任何其他密钥

将 services.json 放在应用程序的模块根目录中应该是调用 FirebaseAuth.signInWithCredential 所需的一切,不需要手动 Oauth 设置。

这是我在 Google 组上找到的一个非常有帮助的讨论:https://groups.google.com/forum/?hl=ca#!topic/firebase-talk/d9MHQjAxFBY

我不得不在 https://console.developers.google.com/apis/credentials

将 Web 客户端 ID 和 Web 客户端密码列入白名单

还要确保您在代码中使用 requestIdToken(getString(R.string.default_web_client_id)) 而不是 requestIdToken(<Actual Client ID>)

希望对您有所帮助!

jirungaray 的回答是正确的,你不应该只在 API 控制台中生成你自己的密钥。但是,如果你像我一样,在胡闹时删除了你的密钥,你可以解决这个问题。

在 firebase 中转到 Authentication -> Sign in Method -> Google -> Web SDK Configuration 在这里你可以将密钥和秘密更改为你想要的值。