我一直在尝试让 Google 的智能锁在我拥有的两个应用程序之间工作(不幸的是使用不同的 keystore ),但没有任何运气。
在 Smart Lock 中为一个应用程序 (APP 1) 保存密码非常简单,执行以下操作:
Credential credential = new Credential.Builder(email)
.setPassword(password)
.build();
Auth.CredentialsApi.save(mCredentialsApiClient, credential).setResultCallback(...
但是,当我尝试在APP 2中创建CredentialRequest
时,它无法读取从APP 1保存的相同凭据。
我尝试将 accountType
设置为它们之间相同的标识符,例如:
Credential credential = new Credential.Builder(email)
.setPassword(password)
.setAccountType(ACCOUNT_TYPE)
.build();
Auth.CredentialsApi.save(mCredentialsApiClient, credential).setResultCallback(...
...
CredentialRequest request = new CredentialRequest.Builder()
.setAccountTypes(ACCOUNT_TYPE)
.build();
Auth.CredentialsApi.request(mCredentialsApiClient, request).setResultCallback(...
但我收到一个异常,指出您无法在同一凭据上同时设置 password
和 accountType
(与文档所述相符)。
有人在两个应用程序之间尝试过类似的操作吗?
我应该注意,我目前无法将应用程序中的凭据与我的网站登录绑定(bind)起来,因此无法使用数字 Assets 链接
机制。
最佳答案
出于安全原因,digit asset linking是将多个应用程序与不同的包名称和签名证书关联起来以使用 Smart Lock 检索密码的唯一方法。
如果您尚不支持来自网站的凭据,则只需从数字 Assets 链接文件中排除“web”目标,并且凭据将仅在应用程序之间共享(但您仍然必须在某处托管该文件并包含两个应用程序 list 中都有指向此文件的链接)。
关于android - 跨多个应用程序的 Google Smart Lock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43119518/