这是我的第一次尝试。...试图查找最近2天的问题。 我正在尝试将google登录集成到android应用中,但是遇到以下问题: com.google.android.gms.common.api.ApiException:12500
之后的代码来自: https://firebase.google.com/docs/auth/android/google-signin
确保在开发人员控制台中存在oauth客户端ID,并具有〜/ .android / debug.keystore中正确的SHA-1指纹,如其他帖子所述。
在应用程序级别上使用最新的play服务49和build.gradle:实施'com.google.android.gms:play-services-auth:16.0.1'
在下面的项目级别build.gradle中使用:
public class SignUpActivity extends AppCompatActivity {
private GoogleSignInClient gsc;
private FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup);
GoogleSignInOptions gso = new GoogleSignInOptions
.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(String.valueOf(R.string.gplus_api_client_id))
.requestEmail()
.build();
gsc = GoogleSignIn.getClient(this, gso);
//Initialize firebase authentication
firebaseAuth = FirebaseAuth.getInstance();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
// The Task returned from this call is always completed, no need to attach
// a listener.
Task < GoogleSignInAccount > task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
}
private void handleSignInResult(Task < GoogleSignInAccount > completedTask) {
try {
//Sign in Successful
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
Log.w("SignUpActivity/handleSignInResult", "Trying signing in with Google... " + account);
firebaseAuthWithGoogle(account);
// Signed in successfully, show authenticated UI.
// Log.w("SignUpActivity/handleSignInResult", "Google sign in successful for account " + account);
} catch (ApiException e) {
// The ApiException status code indicates the detailed failure reason.
// Please refer to the GoogleSignInStatusCodes class reference for more information.
Log.w("SignUpActivity/handleSignInResult", "Google sign in failed with exception: " + e);
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
Log.i("SignUpActivity/firebaseAuthWithGoogle", "Signed in as : " + account.getId());
AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
firebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener < AuthResult > () {
@Override
public void onComplete(@NonNull Task < AuthResult > task) {
if (task.isSuccessful()) {
FirebaseUser user = firebaseAuth.getCurrentUser();
Log.i("SignUpActivity/firebaseAuthWithGoogle", "Sign in successful for user : " + user);
} else {
Log.e("SignUpActivity/firebaseAuthWithGoogle", "User Authentication failed.");
Snackbar.make(findViewById(R.id.view_signup), "Authentication failed.", Snackbar.LENGTH_SHORT);
}
}
});
}
}
答案 0 :(得分:5)
我有这个问题。并已经解决了。 SHA1调试和发布都已添加到Firebase控制台,但仍然无法正常工作。另外,我尝试仅将SHA1调试,但仍然无法正常工作。经过多次尝试和错误后,我通过从凭据菜单中填写“ oAuth同意屏幕”的信息来解决了问题,这是步骤:
答案 1 :(得分:1)
按照Google开发者文档进行操作,在其中清楚地逐步说明 如何集成Google登录到Android应用。
https://developers.google.com/identity/sign-in/android/start 重要 1检查您是否已在Google控制台中启用Google Plus API。 2在将您的项目配置为Google后,应将其连接到Firebase。您只想在Firebase上选择项目。 3将JSON文件包含到项目浏览器中。 4 YOUR_SERVER_CLIENT_ID 检查您是否提供了正确的服务器客户端ID。
答案 2 :(得分:0)
基本上,问题出在控制台上的SHA1
键上,请重新生成它,然后再次正确地放置在同一项目中。
1)作为答案,请确保您实际签名的Android apk具有与Firebase项目的Android集成部分(可下载google-services.json
的页面)中的控制台中指定的SHA1指纹相同的SHA1指纹。
2)最重要的是转到您的Firebase项目的设置(齿轮图标在左上角“概述”的右侧。然后切换到“帐户链接”标签。在该标签上,将Google Play链接到您的项目。< / p>
答案 3 :(得分:0)
我为同样的错误12500挣扎了好几个小时。 显然,您需要在此页面上填写所有必填信息(应用名称,徽标,电子邮件,授权域) https://console.developers.google.com/apis/credentials 在OAuth同意屏幕选项卡上
答案 4 :(得分:0)
如果尝试了上述所有方法后仍然无法登录,则也可以尝试在真实设备上运行代码。我花了两天时间才能使用android studio模拟器登录。如果您在真实设备上成功登录,则需要在模拟器上更新Google Play服务。
答案 5 :(得分:0)
我在寻找此错误的解决方案时正在使用Android模拟器。我尝试过的事情如下:
但是上述方法直到 我从android模拟器切换到物理android设备后才起作用。 希望这个答案可以帮助某人。
答案 6 :(得分:0)
我现在遇到了同样的问题。经过一些调试后,我发现我错过了在身份验证下启用google登录方法的功能。启用后,它可以正常工作。
答案 7 :(得分:0)
对于谁最终遇到这个问题,我确定您现在正在伸展头发,并一直在思考为什么它仍然不起作用。让我分享对我有用的东西。
完成以下所有操作后,仍然无法正常工作(获取所有强大的12500错误):
所以:
因此,基本上在您的Google API控制台中,您将拥有2个OAuth 2.0客户端ID。您将在这里有2件商品。当您单击内部时,其中一个将带有URI,并为您设置了your-project.firebaseapp.com
(名称为 Web客户端(由Google Service自动创建))。 不要使用其中一个,而是您另一个,它没有为您设置任何URI(名称是 Web客户端(由Google登录自动创建))。由于某些原因,请使用第二个选项 WORKS 。
希望可以为您提供帮助。享受