Jika aplikasi Anda yang menggunakan Smart Lock untuk Sandi membagikan database pengguna ke situs Anda, atau jika aplikasi dan situs Anda menggunakan penyedia login gabungan seperti Login dengan Google, Anda dapat mengaitkan aplikasi tersebut dengan situs sehingga pengguna menyimpan kredensialnya sekali, lalu otomatis login ke aplikasi dan situs tersebut.
Untuk mengaitkan aplikasi dengan situs, deklarasikan pengaitan dengan menghosting file JSON Digital Asset Links di situs Anda, dan menambahkan link ke file Digital Asset Link ke manifes aplikasi Anda.
Dengan menghosting deklarasi Digital Asset Links di situs, Anda juga memungkinkan situs membagikan data isi otomatis ke aplikasi saat dijalankan di Android 8.0 dan yang lebih baru.
Prasyarat
Domain login situs Anda harus tersedia melalui HTTPS.
Mengaitkan aplikasi dengan situs
Buat file JSON Digital Asset Links.
Misalnya, untuk mendeklarasikan bahwa situs
https://signin.example.com
dan aplikasi Android dengan nama paketcom.example
dapat berbagi kredensial login, buat file bernamaassetlinks.json
dengan konten berikut:[{ "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" ] } }]
Kolom
relation
adalah array dari satu atau beberapa string yang menjelaskan hubungan yang dideklarasikan. Untuk mendeklarasikan bahwa aplikasi dan situs berbagi kredensial login, tentukan stringdelegate_permission/common.get_login_creds
.Kolom
target
adalah objek yang menentukan aset tempat deklarasi berlaku. Kolom berikut mengidentifikasi situs:namespace
web
site
URL situs, dalam format
https://domain[:optional_port]
; misalnya,https://www.example.com
.domain harus sepenuhnya memenuhi syarat, dan optional_port harus dihilangkan saat menggunakan port 443 untuk HTTPS.
Target
site
hanya dapat berupa domain root: Anda tidak dapat membatasi pengaitan aplikasi ke subdirektori tertentu. Jangan sertakan jalur dalam URL, seperti garis miring.Subdomain tidak dianggap cocok: yaitu, jika Anda menentukan domain sebagai
www.example.com
, domainwww.counter.example.com
tidak akan dikaitkan dengan aplikasi Anda.Kolom berikut mengidentifikasi aplikasi Android:
namespace
android_app
package_name
Nama paket yang dideklarasikan dalam manifes aplikasi. Misalnya, com.example.android
sha256_cert_fingerprints
Sidik jari SHA256 dari sertifikat penandatanganan aplikasi Anda. Anda dapat menggunakan perintah berikut untuk membuat sidik jari: $ keytool -list -v -keystore my-release-key.keystore
Lihat referensi Digital Asset Links untuk mengetahui detailnya.
Menghosting file JSON Digital Assets Link di lokasi berikut pada domain login:
https://domain[:optional_port]/.well-known/assetlinks.json
Misalnya, jika domain login Anda adalah
signin.example.com
, hosting file JSON dihttps://signin.example.com/.well-known/assetlinks.json
.Jenis MIME untuk file Digital Assets Link harus berupa JSON. Pastikan server mengirimkan header
Content-Type: application/json
dalam respons.Pastikan host Anda mengizinkan Google untuk mengambil file Digital Asset Link. Jika Anda memiliki file
robots.txt
, file tersebut harus mengizinkan agen Googlebot untuk mengambil/.well-known/assetlinks.json
. Sebagian besar situs mengizinkan agen otomatis untuk mengambil file di jalur/.well-known/
sehingga layanan lain dapat mengakses metadata dalam file tersebut:User-agent: * Allow: /.well-known/
Mendeklarasikan pengaitan di aplikasi Android.
Tambahkan baris berikut ke file manifes di bagian
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Tambahkan resource string
asset_statements
ke filestrings.xml
. Stringasset_statements
adalah objek JSON yang menentukan fileassetlinks.json
untuk dimuat. Anda harus meng-escape apostrof dan tanda kutip yang Anda gunakan dalam string. Contoh:<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
Publikasikan aplikasi ke Google Play Store. Ini perlu dirilis di saluran publik agar asosiasi bisa diambil.
(Opsional) Isi dan kirimkan formulir afiliasi Smart Lock untuk Sandi untuk menunjukkan bahwa Anda telah melalui proses ini. Google secara berkala memeriksa apakah afiliasi yang dikirimkan melalui formulir benar-benar berfungsi dan mungkin menghubungi Anda jika terjadi masalah.
Setelah verifikasi selesai, pengguna aplikasi Anda dapat menyimpan kredensial di aplikasi atau situs Anda, dan akan otomatis login ke keduanya.
Contoh: Mengaitkan beberapa aplikasi dengan sebuah situs
Anda dapat mengaitkan beberapa aplikasi dengan suatu situs dengan menentukan setiap aplikasi dalam file
Digital Assets Link. Misalnya, untuk mengaitkan aplikasi com.example
dan
com.example.pro
dengan situs di https://signin.example.com/
, tentukan
kedua aplikasi dalam file JSON yang dihosting di
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"
]
}
}]
Kemudian, deklarasikan pengaitan di kedua aplikasi:
Tambahkan baris berikut ke file manifes di bagian
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Tambahkan resource string berikut ke file
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>
Contoh: Mengaitkan aplikasi dengan beberapa situs
Anda dapat mengaitkan aplikasi dengan beberapa situs dengan menentukan setiap situs di file Digital Assets Link dan menghosting file di setiap situs. Misalnya, untuk
mengaitkan aplikasi com.example
dan com.example.pro
dengan situs di
https://signin.example.com/
dan https://m.example.com/
, tentukan
kedua aplikasi dan kedua situs dalam file JSON yang dihosting di
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"
]
}
}]
Kemudian, dalam file JSON yang dihosting di
https://m.example.com/.well-known/assetlinks.json
, sertakan file Digital
Asset Links utama:
[{
"include": "https://signin.example.com/.well-known/assetlinks.json"
}]
Terakhir, deklarasikan pengaitan di kedua aplikasi:
Tambahkan baris berikut ke file manifes di bagian
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Tambahkan resource string berikut ke file
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>