【问题标题】:Smart Lock SDK is not retrieving credential sets correctly for NexusPlayer( Android TV )Smart Lock SDK 未正确检索 NexusPlayer(Android TV)的凭据集
【发布时间】:2016-10-29 01:22:59
【问题描述】:

我目前正在为我们的 nexus 播放器中的电视应用设置智能锁。

问题是,即使我已经通过我们的移动应用程序(很久以前实现了智能锁 sdk)为我的谷歌帐户保存了一些凭据集,但我无法在我们的电视应用程序中检索所有这些凭据集。

在我们的电视应用中,我只能检索其中一个凭据。

更奇怪的是,如果我尝试通过我的电视应用程序保存我的凭据之一,它已经存在于云中(帐户以 6249 开头),它将被保存你可以看到重复的凭据。之后,我可以从电视应用中的智能锁中检索此凭据。

请注意,电视应用和我们的移动应用的应用域相同。

【问题讨论】:

  • 听起来应用程序具有相同的包,但它们是否使用相同的密钥库签名? (例如,如果您有来自生产 Android 应用程序的保存凭据,但您使用带有调试或开发密钥的 TV 应用程序构建,则为了安全起见,两者不会自动关联)。让我知道,否则,我们可以仔细研究一下!
  • 哦,是的,你是对的,我使用不同的密钥库!让我尝试相同的密钥库,让你知道它是否有效,谢谢 Steven ;)

标签: android google-api google-play-services google-smartlockpasswords


【解决方案1】:

您可以通过CredentialsApi.request() 方法检索保存的凭据。

Auth.CredentialsApi.request(mCredentialsClient, mCredentialRequest).setResultCallback(
new ResultCallback<CredentialRequestResult>() {
@Override
public void onResult(CredentialRequestResult credentialRequestResult) {
if (credentialRequestResult.getStatus().isSuccess()) {
// See "Handle successful credential requests"
onCredentialRetrieved(credentialRequestResult.getCredential());
} else {
// See "Handle unsuccessful and incomplete credential requests"
resolveResult(credentialRequestResult.getStatus());
}
}
});

处理多个保存的凭据:

当需要用户输入以选择凭据时,getStatusCode() 方法返回 RESOLUTION_REQUIRED。在这种情况下,调用状态对象的startResolutionForResult() 方法来提示用户选择一个帐户。然后,通过将Credential.EXTRA_KEY 传递给getParcelableExtra() 方法,从活动的onActivityResult() 方法中检索用户选择的凭据。

这里是如何存储凭据的文档:https://developers.google.com/identity/smartlock-passwords/android/store-credentials#store_credentials

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多