首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用google登录进行错误12501身份验证

使用google登录进行错误12501身份验证
EN

Stack Overflow用户
提问于 2015-11-21 18:06:03
回答 12查看 55.6K关注 0票数 52

我使用google登录服务对使用我的应用程序的用户进行身份验证。当我只需要电子邮件信息的时候,我就开始工作了

代码语言:javascript
运行
复制
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail().build();

然后,我发现我还需要请求ID令牌,以便能够使用我的后端进行身份验证,所以我做到了:

代码语言:javascript
运行
复制
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestIdToken(String.valueOf(R.string.server_client_id))
                    .requestEmail().build();

问题是它不允许我在更改后登录。每次尝试登录时,我所获得的状态都是Status{statusCode=unknown status code: 12501, resolution=null}

我一直在四处搜索,我发现了这个职位,这几乎是一回事。但是,我没有犯回答者指定的任何错误,我的开发控制台中的oAuth客户端ID是用于web应用程序的:

R.string.server_client_id是图片中的第一个客户端ID。当然,所有放置的包名称都是正确的,否则如果没有令牌请求,它甚至无法工作。2人还建议,这个应用程序需要签名才能工作,但是googles文档显示,调试键也应该工作,让人们对应用程序签名进行调试是没有意义的。

我已经想了好几个小时了,但没有成功。有什么问题吗?请随时索取更多的信息,我可能会忘记在这里。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2015-11-22 11:34:28

嗯,这很尴尬,但我想出来了:

代码语言:javascript
运行
复制
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestIdToken(AuthenticatedActivity.this.getResources().getString(R.string.server_client_id))
                    .requestEmail().build();

我向它发送的是资源ID,而不是取消引用的字符串资源。

票数 23
EN

Stack Overflow用户

发布于 2016-04-12 14:20:53

显然,首先要检查发布的sha1键是否正确。但是,如果它仍然不起作用,而且您正在使用google服务8.4.0 ( 'com.google.android.gms:play-services:8.4.0'),i.e.compile),那么可以通过修改GoogleSignInOption对象来解决这个问题。而不是:

代码语言:javascript
运行
复制
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()  
       .requestIdToken("YOUR_WEB_API_ID.apps.googleusercontent.com")
                    .build();

你必须使用:

代码语言:javascript
运行
复制
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestScopes(new Scope(Scopes.PLUS_LOGIN))
                .requestScopes(new Scope(Scopes.PLUS_ME))
                .requestEmail()
                .build();

这解决了返回statusCode=INTERNAL_ERROR或statusCode=Error 12501或statusCode=Error 12500的错误。然后,这个gso对象可以用于创建GoogleApiClient,如下所示:

代码语言:javascript
运行
复制
 mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API,gso)
               // .addApi(Plus.API, null)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
               // .addScope(Plus.SCOPE_PLUS_LOGIN)
                .build(); 

有关详细信息,请参见此:Google不使用android的发布版本

票数 12
EN

Stack Overflow用户

发布于 2017-05-24 13:25:15

确保将SHA-1指纹添加到消防控制台 (发行版)签名密钥中。

找到你的SHA1密钥keytool -exportcert -list -v -alias <your-key-name> -keystore <path-to-production-keystore>

将其添加到firebase控制台:转到https://console.firebase.google.com,选择您的应用程序,选择设置。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33846801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档