我使用google登录服务对使用我的应用程序的用户进行身份验证。当我只需要电子邮件信息的时候,我就开始工作了
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().build();
然后,我发现我还需要请求ID令牌,以便能够使用我的后端进行身份验证,所以我做到了:
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文档显示,调试键也应该工作,让人们对应用程序签名进行调试是没有意义的。
我已经想了好几个小时了,但没有成功。有什么问题吗?请随时索取更多的信息,我可能会忘记在这里。
发布于 2015-11-22 11:34:28
嗯,这很尴尬,但我想出来了:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(AuthenticatedActivity.this.getResources().getString(R.string.server_client_id))
.requestEmail().build();
我向它发送的是资源ID,而不是取消引用的字符串资源。
发布于 2016-04-12 14:20:53
显然,首先要检查发布的sha1键是否正确。但是,如果它仍然不起作用,而且您正在使用google服务8.4.0 ( 'com.google.android.gms:play-services:8.4.0'),i.e.compile),那么可以通过修改GoogleSignInOption对象来解决这个问题。而不是:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken("YOUR_WEB_API_ID.apps.googleusercontent.com")
.build();
你必须使用:
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,如下所示:
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的发布版本
发布于 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,选择您的应用程序,选择设置。
https://stackoverflow.com/questions/33846801
复制相似问题