如果您的应用使用 Smart Lock(密码专用)与您的 或者您的应用和网站使用联合登录服务提供商 作为 Google 登录,您可以将该应用与网站相关联, 用户保存一次凭据后,就会自动登录 应用和网站
要将应用与网站相关联,请通过托管 网站上的 Digital Asset Links JSON 文件;以及 向应用的清单中添加指向 Digital Asset Link 文件的链接。
通过在您的网站上托管 Digital Asset Links 声明,您还可以启用 在网站中分享自动填充 在 Android 8.0 及更高版本上运行时与应用共享数据。
前提条件
您网站的登录域名必须通过 HTTPS 提供。
将应用与网站相关联
- 创建一个 Digital Asset Links JSON 文件。 - 例如,如需声明网站 - https://signin.example.com和 软件包名称为“- com.example”的 Android 应用可以共享登录信息 创建名为- assetlinks.json且包含以下内容的文件: 内容:- [{ "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "web", "site": "https://signin.example.com" } }, { "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "android_app", "package_name": "com.example", "sha256_cert_fingerprints": [ "F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B" ] } }]- relation字段是包含一个或多个字符串的数组,用于描述所声明的关系。如需声明应用和网站可共享登录凭据,请指定字符串- delegate_permission/common.get_login_creds。- target字段是一个对象,用于指定声明所适用的资源。以下字段用于标识网站:- namespace- web- site- 网站的网址,格式为 - https://domain[:optional_port];用于 示例:- https://www.example.com。- domain 必须是完全限定的。 optional_port 为 HTTPS。 - site目标只能是根网域:您不能将应用限制为仅与特定子目录相关联。请勿添加 路径(例如尾部斜杠)。- 子网域不会被视为匹配,也就是说,如果您将 domain 指定为 - www.example.com,则网域- www.counter.example.com不会与您的应用相关联。- 以下字段用于标识 Android 应用: - namespace- android_app- package_name- 应用的清单文件中声明的软件包名称,例如 - com.example.android- sha256_cert_fingerprints- 应用签名证书的 SHA256 指纹。您可以 请使用以下命令生成指纹: - $ keytool -list -v -keystore my-release-key.keystore - 请参阅 Digital Asset Links 参考文档 了解详情。 
- 将这个数字资产链接 JSON 文件托管在 登录网域: - https://domain[:optional_port]/.well-known/assetlinks.json - 例如,如果您的登录网域是 - signin.example.com,请将 JSON 文件托管在- https://signin.example.com/.well-known/assetlinks.json上。- Digital Asset Links 文件的 MIME 类型需为 JSON。确保服务器在响应中发送 - Content-Type: application/json标头。
- 确保您的主机允许 Google 检索您的 Digital Asset Links 文件。如果您有 - robots.txt文件,它必须允许 Googlebot 代理检索- /.well-known/assetlinks.json。大多数网站可以直接允许任何自动化代理检索- /.well-known/路径下的文件,以便其他服务可以访问这些文件中的元数据:- User-agent: * Allow: /.well-known/ 
- 在 Android 应用中声明关联。 - 将以下代码行添加到清单文件中的 - <application>下:- <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
- 将 - asset_statements字符串资源添加到- strings.xml文件中。- asset_statements字符串是一个 JSON 对象,用于指定要加载的- assetlinks.json文件。您必须对字符串中的所有撇号和引号进行转义。例如:- <string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>- > 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
 
- 将应用发布到 Google Play 商店。需要公开发布 渠道以供选择。 
- (可选)填写并提交 <ph type="x-smartling-placeholder"></ph> Smart Lock(密码专用)联属表单 整个过程。Google 会定期检查联属关系 通过此表单提交的表单确实有效, 问题。 
验证完成后,您应用的用户可以将其凭据保存在 自动登录您的应用或网站
示例:将多个应用与一个网站相关联
您可以将多个应用与一个网站相关联,只需在
数字资产链接文件。例如,要将 com.example 和
网站地址为 https://signin.example.com/,有 com.example.pro 个应用,请指定
JSON 文件中
https://signin.example.com/.well-known/assetlinks.json:
[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://signin.example.com"
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.pro",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
}]
然后,在这两个应用中声明关联:
- 将以下代码行添加到清单文件中的 - <application>下:- <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
- 将以下字符串资源添加到 - strings.xml文件中:- <string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>
示例:将应用与多个网站相关联
您可以将应用与多个网站相关联,只需在
Digital Asset Links 文件,并在每个网站上托管该文件。例如,
将 com.example 和 com.example.pro 应用与位于以下网址的网站相关联:
https://signin.example.com/ 和 https://m.example.com/,分别指定
JSON 文件中托管
https://signin.example.com/.well-known/assetlinks.json:
[{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://signin.example.com"
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "web",
    "site": "https://m.example.com"
  },
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
},{
  "relation": ["delegate_permission/common.get_login_creds"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.pro",
    "sha256_cert_fingerprints": [
"F2:52:4D:82:E7:1E:68:AF:8C:BC:EA:B0:A2:83:C8:FE:82:51:CF:63:09:6A:4C:64:AE:F4:43:27:20:40:D2:4B"
    ]
  }
}]
然后,在
https://m.example.com/.well-known/assetlinks.json,包括主要“Digital”(数字)
Asset Links 文件:
[{
  "include": "https://signin.example.com/.well-known/assetlinks.json"
}]
最后,在这两个应用中声明关联:
- 将以下代码行添加到清单文件中的 - <application>下:- <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
- 将以下字符串资源添加到 - strings.xml文件中:- <string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>