หากแอปของคุณที่ใช้ Smart Lock สำหรับรหัสผ่านแชร์ฐานข้อมูลผู้ใช้กับเว็บไซต์ของคุณหรือหากแอปและเว็บไซต์ของคุณใช้ผู้ให้บริการลงชื่อเข้าใช้แบบรวมศูนย์เช่น Google Sign-In คุณสามารถเชื่อมโยงแอปกับเว็บไซต์เพื่อให้ผู้ใช้บันทึกข้อมูลรับรองได้ หนึ่งครั้งแล้วลงชื่อเข้าใช้ทั้งแอปและเว็บไซต์โดยอัตโนมัติ
หากต้องการเชื่อมโยงแอปกับเว็บไซต์ให้ประกาศการเชื่อมโยงโดยโฮสต์ไฟล์ Digital Asset Links JSON บนเว็บไซต์ของคุณและเพิ่มลิงก์ไปยังไฟล์ Digital Asset Link ไปยังไฟล์ Manifest ของแอป
ด้วยการโฮสต์การประกาศลิงก์สินทรัพย์ดิจิทัลบนเว็บไซต์ของคุณคุณยังเปิดใช้งานเว็บไซต์ของคุณเพื่อแบ่งปันข้อมูลการ ป้อนอัตโนมัติ กับแอปของคุณเมื่อทำงานบน Android 8.0 และใหม่กว่า
ข้อกำหนดเบื้องต้น
โดเมนสำหรับลงชื่อเข้าใช้เว็บไซต์ของคุณต้องพร้อมใช้งานผ่าน HTTPS
เชื่อมโยงแอปของคุณกับเว็บไซต์ของคุณ
สร้างไฟล์ Digital Asset Links JSON
ตัวอย่างเช่นหากต้องการประกาศว่าเว็บไซต์
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
คืออาร์เรย์ของสตริงอย่างน้อยหนึ่งสตริงที่อธิบายถึงความสัมพันธ์ที่กำลังประกาศ หากต้องการประกาศว่าแอปและไซต์แชร์ข้อมูลรับรองการลงชื่อเข้าใช้ให้ระบุสตริง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
ชื่อแพ็กเกจที่ประกาศในรายการของแอป ตัวอย่างเช่น com.example.android
sha256_cert_fingerprints
ลายนิ้วมือ SHA256 ของใบรับรองการลงนามแอปของคุณ คุณสามารถใช้คำสั่งต่อไปนี้เพื่อสร้างลายนิ้วมือ: $ keytool -list -v -keystore my-release-key.keystore
ดู ข้อมูลอ้างอิงลิงก์สินทรัพย์ดิจิทัล สำหรับรายละเอียด
โฮสต์ไฟล์ Digital Assets Link JSON ที่ตำแหน่งต่อไปนี้บนโดเมนการลงชื่อเข้าใช้:
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 ดึงไฟล์ Digital Asset Link ของคุณ หากคุณมีไฟล์
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 ตรวจสอบเป็นระยะ ๆ ว่าพันธมิตรที่ส่งผ่านแบบฟอร์มใช้งานได้จริงหรือไม่และอาจติดต่อคุณในกรณีที่มีปัญหา
เมื่อการยืนยันเสร็จสิ้นผู้ใช้แอปของคุณสามารถบันทึกข้อมูลรับรองในแอปของคุณหรือเว็บไซต์ของคุณและลงชื่อเข้าใช้ทั้งสองโดยอัตโนมัติ
ตัวอย่าง: เชื่อมโยงหลายแอพกับเว็บไซต์
คุณสามารถเชื่อมโยงหลายแอพกับเว็บไซต์ได้โดยระบุแต่ละแอพในไฟล์ Digital Assets Link ตัวอย่างเช่นการเชื่อมโยง com.example
และ com.example.pro
ปพลิเคชันที่มีเว็บไซต์ที่ https://signin.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": "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>
ตัวอย่าง: เชื่อมโยงแอพกับหลายเว็บไซต์
คุณสามารถเชื่อมโยงแอปกับเว็บไซต์ต่างๆได้โดยระบุแต่ละเว็บไซต์ในไฟล์ Digital Assets Link และโฮสต์ไฟล์ในแต่ละเว็บไซต์ ตัวอย่างเช่นการเชื่อมโยง 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
ให้รวมไฟล์ Digital Asset Links หลัก:
[{
"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>