我一直遵循https://developers.google.com/identity/smartlock-passwords/android/retrieve-credentials尝试自动登录用户(如果他们已将其凭据保存到chrome中新的Android Smart Lock功能中).我完全遵循了指南,但是传递给setResultCallback()的回调没有被调用.有人遇到过这个问题吗?
没有错误消息或任何东西,只是不被调用.
解决方法:
问题可能是Google API客户端未连接,请尝试在您的活动的onStart()方法中调用connect(),或者如果您使用的是Play服务的最新版本,我们添加了对API客户端的自动管理这更容易,真正简化了工作并避免了常见问题.
在构建GoogleApiClient时只需调用enableAutoManage()即可:
// "this" is a reference to your activity
mCredentialsApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.enableAutoManage(this, this)
.addApi(Auth.CREDENTIALS_API)
.build();
然后,您可以发出API请求,而无需随时调用mCredentialsApiClient.onConnect(),Google API客户端的生命周期将自动为您管理.例如
@Override
public void onStart() {
CredentialRequest request = new CredentialRequest.Builder()
.setSupportsPasswordLogin(true)
.build();
Auth.CredentialsApi.request(mCredentialsApiClient, request).setResultCallback(
new ResultCallback<CredentialRequestResult>() {
public void onResult(CredentialRequestResult result) {
// result.getStatus(), result.getCredential() ... sign in automatically!
...
在Github上查看完整的示例应用程序:https://github.com/googlesamples/android-credentials/blob/master/credentials-quickstart/app/src/main/java/com/google/example/credentialsbasic/MainActivity.java