Google 跨多个应用的​​ Smart Lock

Google Smart Lock across multiple apps

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

在 Smart Lock 中为一个应用程序 (APP 1) 保存密码很简单,方法如下:

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

但是,当我尝试在 APP 2 中创建 CredentialRequest 时,它无法读取从 APP 1[= 中保存的相同凭据31=]。 我尝试将 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 机制。

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

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