Se la tua app che utilizza Smart Lock per password condivide un database di utenti con il tuo sito web o se la tua app e il tuo sito web utilizzano provider di accesso federati come Accedi con Google, puoi associare l'app al sito web in modo che gli utenti salvino le loro credenziali una sola volta e accedano automaticamente sia all'app sia al sito web.
Per associare un'app a un sito web, dichiara le associazioni ospitando un file JSON Digital Asset Links sul tuo sito web e aggiungi un link al file Digital Asset Link al file manifest della tua app.
Ospitando una dichiarazione di link di asset digitali sul tuo sito web, consenti anche al sito web di condividere i dati di compilazione automatica con la tua app quando utilizzi Android 8.0 e versioni successive.
Prerequisiti
Il dominio di accesso del tuo sito web deve essere disponibile tramite HTTPS.
Associare la tua app al tuo sito web
Crea un file JSON Digital Asset Links.
Ad esempio, per dichiarare che il sito web
https://signin.example.com
e un'app Android con il nome pacchettocom.example
possono condividere le credenziali di accesso, crea un file denominatoassetlinks.json
con il seguente contenuto:[{ "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" ] } }]
Il campo
relation
è un array di una o più stringhe che descrivono la relazione dichiarata. Per dichiarare che app e siti condividono le credenziali di accesso, specifica la stringadelegate_permission/common.get_login_creds
.Il campo
target
è un oggetto che specifica l'asset a cui si applica la dichiarazione. I seguenti campi identificano un sito web:namespace
web
site
L'URL del sito web, nel formato
https://domain[:optional_port]
; ad esempio,https://www.example.com
.domain deve essere completo e optional_port deve essere omesso quando si utilizza la porta 443 per HTTPS.
Un target
site
può essere solo un dominio principale: non puoi limitare un'associazione di app a una sottodirectory specifica. Non includere nell'URL un percorso, ad esempio una barra finale.I sottodomini non sono considerati corrispondenti, ovvero se specifichi domain come
www.example.com
, il dominiowww.counter.example.com
non è associato alla tua app.I seguenti campi identificano un'app Android:
namespace
android_app
package_name
Il nome del pacchetto dichiarato nel file manifest dell'app. Ad esempio: com.example.android
sha256_cert_fingerprints
Le impronte SHA256 del certificato di firma della tua app. Puoi utilizzare il seguente comando per generare l'impronta: $ keytool -list -v -keystore my-release-key.keystore
Consulta il riferimento sui link agli asset digitali per i dettagli.
Ospita il file JSON Digital Assets Link nella seguente posizione del dominio di accesso:
https://domain[:optional_port]/.well-known/assetlinks.json
Ad esempio, se il dominio di accesso è
signin.example.com
, ospita il file JSON all'indirizzohttps://signin.example.com/.well-known/assetlinks.json
.Il tipo MIME del file Digital Assets Link deve essere JSON. Assicurati che il server invii un'intestazione
Content-Type: application/json
nella risposta.Assicurati che l'host consenta a Google di recuperare il file Digital Asset Link. Se hai un file
robots.txt
, deve consentire all'agente Googlebot di recuperare/.well-known/assetlinks.json
. La maggior parte dei siti può consentire a qualsiasi agente automatico di recuperare i file nel percorso/.well-known/
in modo che altri servizi possano accedere ai metadati all'interno di tali file:User-agent: * Allow: /.well-known/
Dichiara l'associazione nell'app Android.
Aggiungi la seguente riga al file manifest in
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Aggiungi una risorsa stringa
asset_statements
al filestrings.xml
. La stringaasset_statements
è un oggetto JSON che specifica i fileassetlinks.json
da caricare. Devi utilizzare l'escape degli apostrofi e delle virgolette che utilizzi nella stringa. Ad esempio:<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
Pubblicare l'app sul Google Play Store. Perché le associazioni vengano prese, devono essere rilasciate nel canale pubblico.
(Facoltativo) Completa e invia il modulo di affiliazione Smart Lock per password per indicare che hai seguito la procedura. Google verifica periodicamente se le affiliazioni inviate tramite il modulo funzionano effettivamente e potrebbe contattarti in caso di problemi.
Una volta completata la verifica, gli utenti della tua app possono salvare le proprie credenziali nell'app o nel sito web ed eseguire l'accesso automaticamente a entrambi.
Esempio: associare più app a un sito web
Puoi associare più app a un sito web specificando ogni app nel file Digital Assets Link. Ad esempio, per associare le app com.example
e com.example.pro
al sito all'indirizzo https://signin.example.com/
, specifica entrambe le app nel file JSON ospitato su 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"
]
}
}]
quindi dichiara l'associazione in entrambe le app:
Aggiungi la seguente riga al file manifest in
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Aggiungi la seguente risorsa stringa al file
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>
Esempio: associare le app a più siti web
Per associare le app a più siti web, specifica ogni sito web nel file Digital Assets Link e ospita il file su ogni sito web. Ad esempio, per associare le app com.example
e com.example.pro
al sito su https://signin.example.com/
e https://m.example.com/
, specifica entrambe le app e entrambi i siti nel file JSON ospitato su 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"
]
}
}]
Quindi, nel file JSON ospitato in
https://m.example.com/.well-known/assetlinks.json
, includi il file Digital
Asset Asset principale:
[{
"include": "https://signin.example.com/.well-known/assetlinks.json"
}]
Infine, dichiara l'associazione in entrambe le app:
Aggiungi la seguente riga al file manifest in
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Aggiungi la seguente risorsa stringa al file
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>