หากแอปที่ใช้ Smart Lock สําหรับรหัสผ่านแชร์ฐานข้อมูลผู้ใช้กับเว็บไซต์ หรือหากแอปและเว็บไซต์ใช้ผู้ให้บริการการลงชื่อเข้าใช้แบบรวมศูนย์ เช่น Google Sign-In คุณจะเชื่อมโยงแอปกับเว็บไซต์เพื่อให้ผู้ใช้บันทึกข้อมูลเข้าสู่ระบบได้เพียงครั้งเดียว แล้วลงชื่อเข้าใช้ทั้งแอปและเว็บไซต์โดยอัตโนมัติ
หากต้องการเชื่อมโยงแอปกับเว็บไซต์ ให้ประกาศการเชื่อมโยงโดยโฮสต์ไฟล์ JSON ลิงก์เนื้อหาดิจิทัลในเว็บไซต์ และเพิ่มลิงก์ไปยังไฟล์ลิงก์เนื้อหาดิจิทัลลงในไฟล์ Manifest ของแอป
การโฮสต์การประกาศลิงก์เนื้อหาดิจิทัล (Digital Asset Links) ในเว็บไซต์จะทําให้เว็บไซต์แชร์ข้อมูลป้อนข้อความอัตโนมัติกับแอปเมื่อใช้ Android 8.0 ขึ้นไปได้ด้วย
ข้อกำหนดเบื้องต้น
โดเมนสําหรับลงชื่อเข้าใช้ของเว็บไซต์ต้องพร้อมใช้งานผ่าน HTTPS
เชื่อมโยงแอปกับเว็บไซต์
สร้างไฟล์ JSON ของลิงก์เนื้อหาดิจิทัล (Digital Asset Links)
ตัวอย่างเช่น หากต้องการประกาศว่าเว็บไซต์
https://signin.example.com
และแอป Android ที่มีชื่อแพ็กเกจcom.example
สามารถแชร์ข้อมูลรับรองการลงชื่อเข้าใช้ได้ ให้สร้างไฟล์ชื่อ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
เป็นอาร์เรย์ของสตริงอย่างน้อย 1 รายการที่อธิบายถึงความสัมพันธ์ที่ประกาศ หากต้องการประกาศว่าแอปและเว็บไซต์แชร์ข้อมูลรับรองการลงชื่อเข้าใช้ โปรดระบุสตริงdelegate_permission/common.get_login_creds
ช่อง
target
คือออบเจ็กต์ที่ระบุเนื้อหาที่การประกาศใช้ ช่องต่อไปนี้จะระบุเว็บไซต์namespace
web
site
URL ของเว็บไซต์ในรูปแบบ
https://domain[:optional_port]
เช่นhttps://www.example.com
domain ต้องเป็นไฟล์ที่สมบูรณ์ในตัวเอง และต้องไม่มี optional_port เมื่อใช้พอร์ต 443 สําหรับ HTTPS
เป้าหมาย
site
เป็นโดเมนรากได้เท่านั้น: คุณไม่สามารถจํากัดการเชื่อมโยงแอปไปยังไดเรกทอรีย่อยที่เจาะจงได้ อย่าใส่เส้นทางใน URL เช่น เครื่องหมายทับปิดท้ายโดเมนย่อยไม่ถือว่าตรงกัน กล่าวคือ หากคุณระบุ domain เป็น
www.example.com
โดเมนwww.counter.example.com
จะไม่เชื่อมโยงกับแอปของคุณช่องต่อไปนี้จะระบุแอป Android
namespace
android_app
package_name
ชื่อแพ็กเกจที่ประกาศในไฟล์ Manifest ของแอป เช่น com.example.android
sha256_cert_fingerprints
ลายนิ้วมือ SHA256 ของใบรับรองที่ลงนามของแอป คุณใช้คําสั่งต่อไปนี้เพื่อสร้างลายนิ้วมือได้ $ keytool -list -v -keystore my-release-key.keystore
ดูรายละเอียดที่ข้อมูลอ้างอิงลิงก์เนื้อหาดิจิทัล
โฮสต์ไฟล์ JSON ของลิงก์เนื้อหาดิจิทัล (Digital Assets Link) ในตําแหน่งต่อไปนี้ในโดเมนสําหรับลงชื่อเข้าใช้
https://domain[:optional_port]/.well-known/assetlinks.json
เช่น หากโดเมนการลงชื่อเข้าใช้คือ
signin.example.com
ให้โฮสต์ไฟล์ JSON ที่https://signin.example.com/.well-known/assetlinks.json
ประเภท MIME สําหรับไฟล์ Digital Assets Link ต้องเป็น JSON ตรวจสอบว่าเซิร์ฟเวอร์ส่งส่วนหัว
Content-Type: application/json
ในการตอบกลับตรวจสอบว่าโฮสต์อนุญาตให้ Google ดึงข้อมูลไฟล์ลิงก์เนื้อหาดิจิทัลของคุณ หากคุณมีไฟล์
robots.txt
ไฟล์ดังกล่าวจะต้องอนุญาตให้ตัวแทน Googlebot ดึงข้อมูล/.well-known/assetlinks.json
ได้ เว็บไซต์ส่วนใหญ่อนุญาตให้ตัวแทนอัตโนมัติดึงข้อมูลไฟล์ในเส้นทาง/.well-known/
ได้ เพื่อให้บริการอื่นๆ เข้าถึงข้อมูลเมตาในไฟล์เหล่านั้นได้User-agent: * Allow: /.well-known/
ประกาศการเชื่อมโยงในแอป Android
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ Manifest ภายใต้
<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 Store ซึ่งจะต้องเผยแพร่ในช่องทางสาธารณะ เพื่อรับการเชื่อมโยง
(ไม่บังคับ) กรอกและส่ง แบบฟอร์มแอฟฟิลิเอตสําหรับ Smart Lock สําหรับรหัสผ่านเพื่อระบุว่าคุณได้ดําเนินการตามขั้นตอนแล้ว Google จะตรวจสอบเป็นระยะๆ ว่าแอฟฟิลิเอตที่ส่งผ่านแบบฟอร์มใช้งานได้จริงหรือไม่ และอาจติดต่อคุณในกรณีที่เกิดปัญหา
เมื่อการยืนยันเสร็จสมบูรณ์ ผู้ใช้แอปจะบันทึกข้อมูลเข้าสู่ระบบไว้ในแอปหรือเว็บไซต์ได้ จากนั้นก็จะลงชื่อเข้าใช้ทั้ง 2 รายการนี้โดยอัตโนมัติ
ตัวอย่าง: เชื่อมโยงหลายแอปกับเว็บไซต์
คุณเชื่อมโยงแอปหลายแอปกับเว็บไซต์ได้โดยระบุแต่ละแอปในไฟล์ลิงก์เนื้อหาดิจิทัล เช่น หากต้องการเชื่อมโยงแอป com.example
และ com.example.pro
กับเว็บไซต์ใน https://signin.example.com/
ให้ระบุทั้ง 2 แอปในไฟล์ 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"
]
}
}]
จากนั้นประกาศการเชื่อมโยงในแอปทั้งสอง
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ Manifest ภายใต้
<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>
ตัวอย่าง: เชื่อมโยงแอปกับหลายเว็บไซต์
คุณสามารถเชื่อมโยงแอปกับเว็บไซต์หลายเว็บไซต์ได้โดยการระบุแต่ละเว็บไซต์ในไฟล์ลิงก์เนื้อหาดิจิทัลและฝากไฟล์ดังกล่าวไว้ในแต่ละเว็บไซต์ เช่น หากต้องการเชื่อมโยงแอป 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"
]
}
}]
จากนั้นในไฟล์ JSON ที่โฮสต์ที่ https://m.example.com/.well-known/assetlinks.json
ให้ใส่ไฟล์ลิงก์เนื้อหาดิจิทัลหลัก
[{
"include": "https://signin.example.com/.well-known/assetlinks.json"
}]
สุดท้าย ประกาศการเชื่อมโยงในแอปทั้งสอง
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ Manifest ภายใต้
<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>