Android Smart Lock setResultCallback没有被调用

我一直遵循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

上一篇:C#-Exchange Web服务:UseDefaultCredentials属性


下一篇:在python中保护凭证存储