找不到服务器配置中的 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
在这里你可以将密钥和秘密更改为你想要的值。
我正在尝试使用 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
在这里你可以将密钥和秘密更改为你想要的值。