2

我一直在尝试让 Google 的 Smart Lock 在我拥有的两个应用程序之间工作(不幸的是使用不同的密钥库),但没有任何运气。

在 Smart Lock 中为一个应用程序 ( APP 1 ) 保存密码很简单,可以执行以下操作:

Credential credential = new Credential.Builder(email)
            .setPassword(password)
            .build();
Auth.CredentialsApi.save(mCredentialsApiClient, credential).setResultCallback(...

但是,当我尝试CredentialRequestAPP 2中制作 a 时,它无法读取从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(...

但是我得到一个例外,说明您不能在同一个凭据上同时设置passwordaccountType(这与文档所说的相符)。

有人在两个应用程序之间尝试过类似的东西吗?我应该注意,目前我无法将应用程序中的凭据与我的网站登录相关联,因此无法使用该Digital Asset Links机制。

4

1 回答 1

3

出于安全原因,数字资产链接是将多个应用程序与不同的包名称和签名证书相关联以使用 Smart Lock 检索密码的唯一方法。

如果您还不能支持来自网站的凭据,那么只需从数字资产链接文件中排除“网络”目标,凭据将仅在应用程序之间共享(但您仍然必须在某处托管文件并包含指向此文件在两个应用程序清单中)。

于 2017-03-30T21:24:20.437 回答