com.google.android.gms.common.api.ApiException: 12500



这是我的第一次尝试。。。。试图查找过去两天的问题。我正试图将谷歌登录集成到安卓应用程序中,但如下所示:com.google.android.gms.common.api.api异常:12500

遵循以下代码:https://firebase.google.com/docs/auth/android/google-signin

  • 确保oauth客户端id存在于开发控制台中,并具有其他帖子中建议的~/.android/debug.keystore中的正确SHA-1指纹。

  • 在应用程序级别使用最新的播放服务49和build.gradle:implementation.com.google.android.gms:play services auth:16.0.1'

  • 在项目级build.gradle:中使用以下内容

buildscript{//…依赖项{//..classpath‘com.google.gms:google services:4.1.0’//谷歌服务插件}}

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);
}
}
});
}
}

我有这个问题。并且已经解决了这个问题。SHA1调试和relase都已经添加到Firebase控制台中,但仍然不起作用。此外,我试图只调试SHA1,但仍然没有工作。经过这么多的尝试和错误,我通过从凭证菜单中完成"oAuth同意屏幕"的信息来解决它,以下是步骤:

  1. 登录Google控制台云
  2. 选择与当前Firebase项目相关的当前项目
  3. 导航到API&服务
  4. 单击凭证菜单
  5. 单击"oAuth同意屏幕">
  6. 添加应用程序徽标、应用程序主页链接和应用程序隐私政策链接。要添加这两个链接,您只需从"oAuth同意屏幕"的"授权域"部分复制并粘贴即可,例如:your-app-abc123firebaseapp.com

遵循谷歌开发人员文档,在那里一步一步地给出明确的说明如何将谷歌登录集成到安卓应用程序。

https://developers.google.com/identity/sign-in/android/start重要

  1. 检查您是否已在谷歌控制台中启用Google plus API
  2. 在将您的项目配置为Google sing-in后,它应该连接到firebase。你只想在firebase上选择你的项目
  3. 在项目资源管理器中包含JSON文件
  4. YOUR_SERVER_CLIENT_ID检查您是否提供了正确的服务器客户端id

我与同样的错误12500斗争了几个小时。显然,您需要在此页面上填写所有必需的信息(应用程序名称、徽标、电子邮件、授权域)https://console.developers.google.com/apis/credentials在OAuth同意屏幕选项卡上

基本上,问题出在控制台上的SHA1键上,请重新生成它,并重新正确放置相同的项目。

1) 作为答案,请确保您实际签署的Android apk具有与您在Firebase项目的Android集成部分控制台(您可以下载google-services.json的页面)中指定的相同的SHA1指纹

2) 最重要的是,转到你的firebase项目的设置(左上角概览右侧的装备图标。然后切换到帐户链接选项卡。在该选项卡上,将Google Play链接到你的项目。

如果在字符串了上面提到的所有方法之后仍然无法登录,您也可以尝试在实际设备上运行代码。我花了两天时间登录安卓工作室模拟器。如果你在真实的设备上成功登录,那么你需要在模拟器上更新谷歌播放服务。

在搜索此错误的解决方案时,我正在使用Android模拟器。我尝试过的事情如下:

  1. 创建了SHA1证书
  2. 通过添加应用程序徽标和支持电子邮件更新oAuthConsent屏幕

但上述方法直到我从android模拟器切换到物理android设备才起作用希望这个答案能帮助到别人。

  • 快乐学习

我现在遇到了同样的问题。经过一些调试,我发现我错过了在身份验证下启用谷歌登录方法。启用后,工作正常。

对于这个问题的结局,我相信你现在正在拉伸你的头发,并一直在想为什么它仍然不起作用。让我分享一下对我有用的东西。

在你完成了下面的所有这些,但仍然没有得到它的工作(得到所有强大的12500错误):

  1. 检查Firebase项目设置中的调试SHA-1密钥
  2. 在你的项目中更新了你的谷歌服务.json
  3. 更新了您在Firebase项目中的支持电子邮件
  4. 在中更新了您的隐私链接、服务条款链接、应用程序徽标Google API控制台中的Oath2同意页面
  5. 在Android物理设备中运行

所以:

因此,基本上在您的Google API控制台中,您将拥有2个OAuth 2.0客户端ID。这里有两个项目。当您点击内部时,其中一个会有URI,并为您设置your-project.firebaseapp.com(名称为Web客户端(由Google Service自动创建))不要使用那个,而是使用另一个,即没有为您设置任何URI(名称为Web客户端(由Google Sign-In自动创建))。出于某种原因,使用第二个选项WORKS

希望能帮助你。享受

如果你收到平台异常和这个com.google.android.gms.common.api.ApiException:12500,那么不要担心,点击这个链接,我希望你的问题会得到解决。

步骤:-

  1. 删除debug.keystore文件。该文件存储在C:\Documents and Settings<用户>。安卓\在Windows 上

  2. 首先从IDE 运行应用程序

  3. 使用以下命令生成一个新的debug.keystore文件:keytool-list-v-keystore"%USERPROFILE%.android\debug.keystore&quot-别名androiddebugkey-storepassandroid-keypassandroid这里USERPROFILE是指你的电脑用户名

  4. 在firebase控制台中更新您的SHA 1

  5. 下载更新版本的谷歌服务.json文件

参考使用此链接,https://github.com/flutter/flutter/issues/25640#issuecomment-449589417

我今天也遇到了同样的问题。我的应用程序以前运行良好,但今天我收到错误代码12500。这不是一个firebase应用程序。仅使用Google驱动器API。我的应用程序处于测试模式。我尝试提供应用程序徽标,但没有帮助。我刚刚从谷歌云控制台中删除了旧的androidOAuth2 credential,并重新创建了它。现在它又开始工作了。

最新更新