前提条件

在应用和网站之间使用凭据管理器实现无缝登录体验的主要前提条件是,在它们之间建立安全关联。这是通过 Digital Asset Links 文件实现的,该文件可让凭据提供方在您的应用和网站之间安全地共享凭据。例如,网站可以使用 Digital Asset Links 文件声明其与 Android 应用或其他网站共享凭据。使用数字资产链接可让用户获得顺畅的登录体验,并在关联的应用和网站中使用相同的已保存凭据。

如需允许凭据提供程序在您的应用和网站中普遍使用通行密钥和密码,请按照以下步骤为您的应用创建 Digital Asset Links 文件:

创建一个名为 assetlinks.json 的文件,其中包含以下结构:

[
    {
    "relation" : [
        "<array_of_permissions_granted_to_app>"
    ],
    "target" : {
        "namespace" : "android_app",
        "package_name" : "<android_application_package_name>",
        "sha256_cert_fingerprints" : [
            "<sha256_certificate_fingerprint_of_signing_key>"
]
    }
}
]
  • relation:包含一个或多个字符串的数组,用于描述所声明的关系。如需声明应用和网站共享登录凭据,请在数组中指定以下关系:

    • delegate_permission/common.handle_all_urls:此关系可启用 Android 应用链接,让您的 Android 应用处理特定网域的所有网址。

    • delegate_permission/common.get_login_creds:此关系可在您的网站和 Android 应用之间共享凭据。

  • target:一个对象,用于指定声明所适用的资产。

    • target.namespace:将此项设置为 android_app
    • target.package_name:请将此属性设置为应用清单中声明的软件包名称,例如 com.example.android
  • sha256_cert_fingerprints:应用签名证书的 SHA256 指纹。如需检索应用的 SHA256 指纹,请参阅声明网站关联

应用的示例目标如下所示:

[
  {
    "relation" : [
      "delegate_permission/common.handle_all_urls",
      "delegate_permission/common.get_login_creds"
    ],
    "target" : {
      "namespace" : "android_app",
      "package_name" : "com.example.android",
      "sha256_cert_fingerprints" : [
        SHA_HEX_VALUE
      ]
    }
  }
]

将 Digital Asset Links 文件托管在您网站的登录网域中的以下位置:

```none
https://domain[:optional_port]/.well-known/assetlinks.json
```

例如,如果您的登录网域是 signin.example.com,请将文件托管在 https://signin.example.com/.well-known/assetlinks.json 上。

Digital Asset Links 文件的 MIME 类型必须为 JSON。确保服务器在响应中发送 Content-Type: application/json 标头,并将 HTTP 状态设置为 200

3. 允许检索 Digital Asset Links 文件

更新您的主机,以允许 Google 检索您的 Digital Asset Links 文件。大多数网站允许任何自动化代理检索 /.well-known/ 路径下的文件,以便其他服务可以访问这些文件中的元数据。

如果您有 robots.txt 文件,请按如下方式更新 robots.txt,以允许网络爬虫检索 /.well-known/assetlinks.json

User-agent: *
Allow: /.well-known/

4. 更新应用的清单

在应用的清单文件中,在 <application> 下添加以下代码行:

<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />

5. 为密码配置 Digital Asset Links

如果您使用 Credential Manager 管理密码,则必须完成额外的步骤来配置数字资产链接。

在清单文件中添加一个对象,用于指定要加载的 assetlinks.json 文件。您必须对字符串中的所有撇号和引号进行转义,如以下示例所示:

<string name="asset_statements" translatable="false">
[{
  \"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
}]
</string>

https://signin.example.com/.well-known/assetlinks.json 链接必须返回 HTTP 200 响应,并且具有值为 application/jsonContent-Type 标头。如果响应包含 301302 HTTP 重定向或非 JSON Content-Type,则验证失败。

以下示例展示了示例请求和预期响应标头:

> GET /.well-known/assetlinks.json HTTP/1.1
> User-Agent: curl/7.35.0
> Host: signin.example.com

< HTTP/1.1 200 OK
< Content-Type: application/json

后续步骤

添加必要的依赖项并为通行密钥配置数字资产链接后,您可以使用 Credential Manager 实现受支持的身份验证方法:通行密钥和“使用 Google 账号登录”。如需开始使用,请参阅以下开发者指南: