Nếu ứng dụng dùng Smart Lock cho Mật khẩu chia sẻ cơ sở dữ liệu người dùng với trang web của bạn (hoặc nếu ứng dụng và trang web của bạn dùng nhà cung cấp dịch vụ đăng nhập được liên kết, chẳng hạn như tính năng Đăng nhập bằng Google), thì bạn có thể liên kết ứng dụng đó với trang web để người dùng lưu thông tin xác thực một lần, sau đó tự động đăng nhập vào cả ứng dụng và trang web.
Để liên kết ứng dụng với trang web, hãy khai báo mối liên kết bằng cách lưu trữ tệp JSON Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) trên trang web và thêm đường liên kết vào tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) vào tệp kê khai của ứng dụng.
Bằng cách lưu trữ nội dung khai báo về Đường liên kết đến tài sản kỹ thuật số trên trang web, bạn cũng cho phép trang web chia sẻ dữ liệu tự động điền với ứng dụng khi chạy trên Android 8.0 trở lên.
Điều kiện tiên quyết
Miền đăng nhập của trang web phải dùng được thông qua HTTPS.
Liên kết ứng dụng với trang web
Tạo tệp JSON Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số).
Ví dụ: để khai báo rằng trang web
https://signin.example.com
và ứng dụng Android có tên góicom.example
có thể dùng chung thông tin đăng nhập, hãy tạo một tệp có tênassetlinks.json
với nội dung sau:[{ "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" ] } }]
Trường
relation
là một mảng gồm một hoặc nhiều chuỗi mô tả mối quan hệ đang được khai báo. Để khai báo rằng các ứng dụng và trang web dùng chung thông tin đăng nhập, hãy chỉ định chuỗidelegate_permission/common.get_login_creds
.Trường
target
là đối tượng chỉ định tài sản mà nội dung khai báo sẽ áp dụng. Sau đây là các trường xác định một trang web:namespace
web
site
URL của trang web, có định dạng
https://domain[:optional_port]
; ví dụ:https://www.example.com
.domain phải đủ điều kiện và phải bỏ qua optional_port khi sử dụng cổng 443 cho HTTPS.
Đích
site
chỉ được là miền gốc: bạn không thể giới hạn liên kết ứng dụng với một thư mục con cụ thể. Không thêm một đường dẫn vào URL, chẳng hạn như dấu gạch chéo ở cuối.Miền con không được cân nhắc để khớp: nghĩa là nếu bạn chỉ định domain là
www.example.com
, thì miềnwww.counter.example.com
sẽ không được liên kết với ứng dụng của bạn.Sau đây là các trường xác định một ứng dụng Android:
namespace
android_app
package_name
Tên gói được khai báo trong tệp kê khai của ứng dụng. Ví dụ: com.example.android
sha256_cert_fingerprints
Vân tay số SHA256 của chứng chỉ ký ứng dụng. Bạn có thể dùng lệnh sau để tạo vân tay số: $ keytool -list -v -keystore my-release-key.keystore
Vui lòng xem tài liệu tham khảo về Đường liên kết đến tài sản kỹ thuật số để biết thông tin chi tiết.
Lưu trữ tệp JSON chứa Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) tại vị trí sau trên miền đăng nhập:
https://domain[:optional_port]/.well-known/assetlinks.json
Ví dụ: nếu miền đăng nhập của bạn là
signin.example.com
, hãy lưu trữ tệp JSON tạihttps://signin.example.com/.well-known/assetlinks.json
.Loại MIME cho tệp Digital Asset Link (Đường liên kết đến tài sản kỹ thuật số) phải là JSON. Hãy đảm bảo máy chủ gửi một tiêu đề
Content-Type: application/json
trong phản hồi.Đảm bảo rằng máy chủ lưu trữ cho phép Google truy xuất tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) của bạn. Nếu bạn có tệp
robots.txt
, tệp đó phải cho phép tác nhân Googlebot truy xuất/.well-known/assetlinks.json
. Hầu hết các trang web chỉ cần cho phép mọi tác nhân tự động truy xuất tệp trong đường dẫn/.well-known/
để các dịch vụ khác có thể truy cập vào siêu dữ liệu trong những tệp đó:User-agent: * Allow: /.well-known/
Khai báo mối liên kết trong ứng dụng Android.
Thêm dòng sau vào tệp kê khai trong
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Thêm một tài nguyên chuỗi
asset_statements
vào tệpstrings.xml
. Chuỗiasset_statements
là một đối tượng JSON chỉ định các tệpassetlinks.json
cần tải. Bạn phải thoát mọi dấu nháy đơn và dấu ngoặc kép mà bạn dùng trong chuỗi. Ví dụ:<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
Phát hành ứng dụng lên Cửa hàng Google Play. Tên này cần được phát hành trên kênh công khai để có thể nhận các mối liên kết.
(Không bắt buộc) Hoàn tất và gửi biểu mẫu liên kết Smart Lock cho Mật khẩu để cho biết rằng bạn đã thực hiện quy trình. Google định kỳ kiểm tra xem các đơn vị liên kết được gửi thông qua biểu mẫu có thực sự hoạt động hay không và có thể liên hệ với bạn trong trường hợp có vấn đề.
Khi quá trình xác minh hoàn tất, người dùng ứng dụng có thể lưu thông tin xác thực của họ trên ứng dụng hoặc trang web của bạn và được tự động đăng nhập vào cả hai.
Ví dụ: Liên kết nhiều ứng dụng với một trang web
Bạn có thể liên kết nhiều ứng dụng với một trang web bằng cách chỉ định từng ứng dụng trong tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số). Ví dụ: để liên kết ứng dụng com.example
và com.example.pro
với trang web tại https://signin.example.com/
, hãy chỉ định cả hai ứng dụng trong tệp JSON được lưu trữ tại 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"
]
}
}]
Sau đó, hãy khai báo mối liên kết trong cả hai ứng dụng:
Thêm dòng sau vào tệp kê khai trong
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Thêm tài nguyên chuỗi sau vào tệp
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>
Ví dụ: Liên kết ứng dụng với nhiều trang web
Bạn có thể liên kết ứng dụng với nhiều trang web bằng cách chỉ định từng trang web trong tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) và lưu trữ tệp đó trên từng trang web. Ví dụ: để liên kết ứng dụng com.example
và com.example.pro
với trang web tại https://signin.example.com/
và https://m.example.com/
, hãy chỉ định cả ứng dụng và cả hai trang web trong tệp JSON được lưu trữ tại 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"
]
}
}]
Sau đó, trong tệp JSON được lưu trữ tại https://m.example.com/.well-known/assetlinks.json
, hãy thêm tệp Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) chính:
[{
"include": "https://signin.example.com/.well-known/assetlinks.json"
}]
Cuối cùng, hãy khai báo mối liên kết này trong cả hai ứng dụng:
Thêm dòng sau vào tệp kê khai trong
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Thêm tài nguyên chuỗi sau vào tệp
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>