未调用 Android Smart Lock setResultCallback

Sar*_*lar 4 android credentials google-play-services google-smartlockpasswords

我一直在关注https://developers.google.com/identity/smartlock-passwords/android/retrieve-credentials以尝试自动登录用户,如果他们已将凭据保存到 chrome 中的新 Android Smart Lock 功能。我完全遵循了指南,但是我传递给 setResultCallback() 的回调没有被调用。有没有人遇到过这个问题?

没有错误消息或任何东西,只是没有被调用。

son*_*eff 5

问题很可能是谷歌API客户端没有连接,尝试调用你activityconnect()onStart()方法,或者如果你使用的是最新版本的Play Services,我们添加了API客户端的自动管理,让这变得更容易,真正简化事情并避免常见问题。

只需enableAutoManage()在构建时调用GoogleApiClient

    // "this" is a reference to your activity
    mCredentialsApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .enableAutoManage(this, this)
            .addApi(Auth.CREDENTIALS_API)
            .build();
Run Code Online (Sandbox Code Playgroud)

然后您可以mCredentialsApiClient.onConnect()在任何时候无需调用即可发出 API 请求,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!
...
Run Code Online (Sandbox Code Playgroud)

在 Github 上查看完整的示例应用程序:https : //github.com/googlesamples/android-credentials/blob/master/credentials-quickstart/app/src/main/java/com/google/example/credentialsbasic/MainActivity。爪哇