如果您的应用使用 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>