Jam*_*ter 48 android google-play-services google-signin google-identity
我正在使用谷歌登录服务来验证使用我的应用程序的用户.当我刚要求电子邮件信息时,我得到了它的工作
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().build();
Run Code Online (Sandbox Code Playgroud)
然后,我发现我还需要请求ID令牌才能使用我的后端进行身份验证,所以我做了:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(String.valueOf(R.string.server_client_id))
.requestEmail().build();
Run Code Online (Sandbox Code Playgroud)
问题是它不会让我在更改后登录.我每次尝试登录时都会得到的状态是Status{statusCode=unknown status code: 12501, resolution=null}.
我一直在寻找,我发现这篇文章几乎是一回事.但是,我没有回答任何人所提出的任何错误,我的开发控制台中的oAuth客户端ID用于Web应用程序:
并且R.string.server_client_id是图片中的第一个客户端ID.包名称当然是正确的,否则它甚至在没有令牌请求的情况下也无法工作.2人还建议应用程序需要签名才能使用,但googles文档说调试密钥也应该工作,并且让人们签署应用程序进行调试没有意义.
我一直在试图解决这个问题几个小时但没有成功.可能是什么问题呢?请随时索取我可能忘记放在这里的更多信息.
Jam*_*ter 22
嗯,这非常令人尴尬,但我想通了:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(AuthenticatedActivity.this.getResources().getString(R.string.server_client_id))
.requestEmail().build();
Run Code Online (Sandbox Code Playgroud)
我发送的是资源ID而不是解除引用的字符串资源.
小智 10
显然首先检查你的释放sha1键是否正确.但如果它仍然不起作用并且你使用谷歌播放服务8.4.0(即编译'com.google.android.gms:播放服务:8.4.0'),可以通过修改GoogleSignInOption对象来解决问题.代替:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken("YOUR_WEB_API_ID.apps.googleusercontent.com")
.build();
Run Code Online (Sandbox Code Playgroud)
你必须使用:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(Scopes.PLUS_LOGIN))
.requestScopes(new Scope(Scopes.PLUS_ME))
.requestEmail()
.build();
Run Code Online (Sandbox Code Playgroud)
这解决了返回statusCode = INTERNAL_ERROR或statusCode = Error 12501 OR 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();
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅此处:Google登录不适用于Android的发布版本
确保您已将(发布)签名密钥的SHA-1 指纹添加到Firebase 控制台
找到您的 SHA1 密钥:keytool -exportcert -list -v -alias <your-key-name> -keystore <path-to-production-keystore>
将其添加到 firebase 控制台:转到https://console.firebase.google.com,选择您的应用程序,选择设置。
| 归档时间: |
|
| 查看次数: |
44717 次 |
| 最近记录: |