状态码 12501 使用 google 登录进行身份验证
Posted
技术标签:
【中文标题】状态码 12501 使用 google 登录进行身份验证【英文标题】:Status code 12501 authenticating with google sign-in 【发布时间】:2016-04-08 14:30:26 【问题描述】:我正在使用以下这些代码行进行 G+ 登录 android 集成。
在应用程序 build.gradle 中:
compile 'com.google.android.gms:play-services-auth:8.4.0'
compile 'com.google.android.gms:play-services-plus:8.4.0'
在 MainActivity 中:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.com")
.requestProfile()
.build();
AppCompatActivity appCompatActivity = (AppCompatActivity) context;
googleApiClient = new GoogleApiClient.Builder(context)
.enableAutoManage(appCompatActivity, this)
.addConnectionCallbacks(this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addApi(Plus.API)
.build();
我还在应用级别添加了“google-services.gson”文件。 我还制作了 web-application 并将 client-id 用于 requestIdToken() 参数。
requestIdToken(webapp 的客户端 ID)。
编写此代码后,我仍然收到状态代码 = 12501 作为响应,并且 tokenId = null。
我也读过this link。但找不到任何解决方案。
【问题讨论】:
我们在this post找到了解决方案 【参考方案1】:您需要在google-services.json
文件中添加签名和调试client_id
的凭据,如下所示:
"oauth_client": [
"client_id": "<your-client-id>",
"client_type": 1,
"android_info":
"package_name": "<your-package-name>",
"certificate_hash": "<hash>"
,
"client_id": "<your-client-id-2>",
"client_type": 1,
"android_info":
"package_name": "<your-package-name-2>",
"certificate_hash": "<hash-2>"
]
【讨论】:
您可能还需要仔细检查您使用的 clientIds 以及包名称不匹配的可能性。我不确定这个reference 是否会帮助你,但我还是会粘贴它。 这两个客户端ID是您使用调试密钥库和签名密钥库获得的。您可能希望将两者都包含在您的 google-services.json 文件中 我想知道client-id是android id还是client-id是web application id? 让我们continue this discussion in chat。 @Akashsingla19 和 gerard 谢谢,你的聊天和上面的回答让我找到了我的解决方案;但是我认为对 Web 客户端 ID 的看法有些误导。我不知道 Android Studio 如何自动生成 Web 客户端 ID,但它与我的 google 服务控制台中的调试密钥不同。 Android Studio 在 6 月份为我的调试密钥自动创建了一个条目,可能对应于我对 Android Studio 所做的升级,所以也许当你们俩都在解决这个问题时,AS 没有自动生成调试密钥......继续...【参考方案2】:这可能是由于 Sha-1 和 Sha-256 版本和调试密钥不匹配造成的。
将所有三个(调试:Sha-1,发布:Sha-1 和 Sha-256)键添加到 firebase 控制台,然后重新下载 json 并替换。
对我来说很好用。
有时 OAuth 2.0 客户端 ID(Web 应用程序密钥)可能不匹配
【讨论】:
【参考方案3】:确保在清单文件中包含以下内容:
<application ...>
<meta-data
android:name="com.google.android.gms.games.APP_ID"
android:value="@string/app_id" /> <!-- if app is a game -->
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
【讨论】:
以上是关于状态码 12501 使用 google 登录进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章