我正在尝试使用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);
}
}
});
}
答案 0 :(得分:5)
Firebase的默认配置使用从firebase控制台(而不是云控制台)发出的services.json。在Firebase控制台上创建项目时会自动配置Oauth设置,因此您不应使用手动创建的任何其他键。
在应用程序的模块根目录上安装services.json应该是调用FirebaseAuth.signInWithCredential
所需的一切,不需要手动设置Oauth。
答案 1 :(得分:2)
以下是我在Google网上论坛上发现的一个非常有用的讨论:https://groups.google.com/forum/?hl=ca#!topic/firebase-talk/d9MHQjAxFBY
我必须将Web客户端ID和白名单列入白名单。 https://console.developers.google.com/apis/credentials
上的Web客户端密钥另外,请确保您在代码中使用requestIdToken(getString(R.string.default_web_client_id))
而不是requestIdToken(<Actual Client ID>)
我希望这有帮助!
答案 2 :(得分:2)
jirungaray的回答是正确的,你不应该只是在API控制台中生成自己的密钥。但是,如果你像我一样并在乱搞时删除了你的密钥,你就可以解决这个问题。
在firebase中转到Authentication
- &gt; Sign in Method
- &gt; Google
- &gt; Web SDK Configuration
在这里,您可以将密钥和密码更改为您想要的值。