通过实现跨平台无缝凭据共享,最大限度地为用户提供便利 您的应用和网站当多个网站和 Android 应用共享一个 账号管理后端,此功能允许用户保存一次凭据 并让系统在任何关联的网站或 Android 应用中自动推荐这些内容。
最佳做法
为实现最佳用户体验和安全性,请实现无缝凭据共享 :
- 登录表单:启用自动凭据填充功能。
- 注册表单:安全地存储用于跨平台使用的新凭据。
- 密码更改表单:在所有平台上同步密码更新。
- 密码重置表单:允许重置一次密码以更新所有平台。
- 网页视图网域:将凭据共享扩展到以下网页视图网域 您负责处理账号管理(主机登录、注册、密码)的应用 更改或密码重置表单)。
- Android 应用
此方法创建了统一的凭据管理系统,增强了 确保用户便利性和安全性
在设计账号管理网站时,建议您遵循以下原则 有关账号管理网站的最佳做法:
在设计 Android 应用时,我们建议您将应用与 Android Credential Manager 集成。
前提条件
在设置无缝凭据共享之前,请确保您具备以下各项: 每个平台:
对于每个 Android 应用:
- Android 应用 ID,在应用的
build.gradle
文件中声明。 - 签名证书的 SHA256 指纹。
- (推荐)使用 Credential Manager API 实现的用户登录机制。
对于每个网站:
- 能够在每个位置分别发布
/.well-known/assetlinks.json
文件 网域,遵循 Digital Asset Links (DAL) 语法。 - 所有账号管理网域(登录、注册、密码更改或密码) 重置表单)必须可通过 HTTPS 访问。
跨 Android 应用和网站实现无缝凭据共享
要配置跨应用和网站的无缝凭据共享,您可以创建 并发布 Digital Asset Links 声明列表,声明 实体(网站或 Android 应用)可以共享凭据。
如需声明凭据共享关系,请执行以下操作:
创建一个
assetlinks.json
文件,其中包含链接到该网站的语句,并 传递给 Android 应用,遵循 DALs 语句列表语法:[ { "relation":[ "delegate_permission/common.get_login_creds" ], "target":{ "namespace":"web", "site":URL } }, { "relation":[ "delegate_permission/common.get_login_creds" ], "target":{ "namespace":"android_app", "package_name":"APP_ID", "sha256_cert_fingerprints":[ "SHA_HEX_VALUE" ] } } ]
其中,
URL
是您网站的网址,APP_ID
是您的 Android 应用 ID,SHA_HEX_VALUE
是 您的 Android 应用签名。relation
字段用于描述所声明的关系。要声明 如果应用和网站共享登录凭据,请将关系指定为delegate_permission/common.get_login_creds
。详细了解 DAL 中的关系字符串。target
字段是一个对象,用于指定声明中的资源 应用范围。以下字段用于标识网站:
namespace
web
site
网站的网址,格式为
https://domain[:optional_port
];例如 https://www.example.comdomain
必须是完全限定的,在为 HTTPS 使用端口 443 时必须省略optional_port
。site
目标只能是根网域:您不能将应用限制为仅与特定子目录相关联。请勿在网址中包含路径(例如尾部斜杠)。子网域不会被视为匹配:也就是说,如果您将
domain
指定为 www.example.com,则网域 www.counter.example.com 不会与您的应用关联。以下字段用于标识 Android 应用:
命名空间
android_app
package_name
应用的清单文件中声明的软件包名称,例如,com.example.android
sha256_cert_fingerprints
应用的签名证书的 SHA256 指纹。
将 Digital Asset Links JSON 文件托管在 登录网域:
https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json
,其中DOMAIN
是完全限定的,以及OPTIONAL_PORT
为 HTTPS。通过在 Android 应用中嵌入一个声明, Android 应用的
res/values/strings.xml
文件,其中链接到您的声明列表 第 1 步中创建的代码添加一个对象,用于指定assetlinks.json
文件, 加载。例如:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json\" }] </string>
将
DOMAIN
和OPTIONAL_PORT
(使用端口时必须省略 443)- 例如https://www.example.com
。对所有撇号进行转义 和引号。您还可以在
strings.xml
文件中添加 JSON 代码段,如 DAL 文档,但使用include
语句可让您 变更语句,而不必发布应用的新版本。将下面这行代码添加到 在
<application>
下找到应用的AndroidManifest.xml
文件:<meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
向 Google Play 开发者发布新版 Android 应用 控制台
完成以下步骤后,您已成功设置无缝凭据 在网站和 Android 应用之间共享数据。
请注意,这不是设置用于凭据共享的 DAL 的唯一有效方法, 但这种方法可以简化将新实体添加到 可提高代码可重用性, 更新过程中出错的可能性