Si votre application qui utilise Smart Lock pour les mots de passe partage une base de données utilisateur avec votre site Web (ou si votre application et votre site Web utilisent des fournisseurs de connexion fédérée tels que Google Sign-In), vous pouvez associer l'application au site Web afin que les utilisateurs enregistrent leurs identifiants une seule fois, puis se connectent automatiquement à l'application et au site Web.
Pour associer une application à un site Web, déclarez des associations en hébergeant un fichier JSON Digital Asset Links sur votre site Web et en ajoutant un lien vers ce fichier au fichier manifeste de votre application.
En hébergeant une déclaration Digital Asset Links sur votre site Web, vous permettez également à celui-ci de partager des données de saisie automatique avec votre application lorsqu'elle s'exécute sous Android 8.0 ou version ultérieure.
Conditions préalables
Le domaine de connexion de votre site Web doit être disponible via HTTPS.
Associer votre application à votre site Web
Créez un fichier JSON Digital Asset Links.
Par exemple, pour déclarer que le site Web
https://signin.example.com
et une application Android portant le nom de packagecom.example
peuvent partager les identifiants de connexion, créez un fichier nomméassetlinks.json
avec le contenu suivant:[{ "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" ] } }]
Le champ
relation
est un tableau d'une ou de plusieurs chaînes décrivant la relation déclarée. Pour déclarer que les applications et les sites partagent les identifiants de connexion, spécifiez la chaînedelegate_permission/common.get_login_creds
.Le champ
target
est un objet qui spécifie l'élément auquel la déclaration s'applique. Les champs suivants identifient un site Web :namespace
web
site
URL du site Web, au format
https://domain[:optional_port]
. Exemple :https://www.example.com
.La propriété domain doit être complète, et optional_port doit être omis si vous utilisez le port 443 pour HTTPS.
Une cible
site
ne peut être qu'un domaine racine : vous ne pouvez pas limiter une association d'applications à un sous-répertoire spécifique. N'incluez pas de chemin d'accès dans l'URL, comme une barre oblique finale.Les sous-domaines ne sont pas considérés comme identiques : si vous spécifiez domain comme
www.example.com
, le domainewww.counter.example.com
ne sera pas associé à votre application.Les champs suivants identifient une application Android :
namespace
android_app
package_name
Nom de package déclaré dans le fichier manifeste de l'application. Exemple : com.example.android
sha256_cert_fingerprints
Empreinte SHA256 du certificat de signature de votre application. Vous pouvez utiliser la commande suivante pour générer l'empreinte : $ keytool -list -v -keystore my-release-key.keystore
Pour en savoir plus, consultez la documentation de référence sur Digital Asset Links.
Hébergez le fichier JSON Digital Assets Links à l'emplacement suivant sur le domaine de connexion :
https://domain[:optional_port]/.well-known/assetlinks.json
.Par exemple, si votre domaine de connexion est
signin.example.com
, hébergez le fichier JSON surhttps://signin.example.com/.well-known/assetlinks.json
.Le fichier MIME du fichier Digital Asset Links doit être au format JSON. Assurez-vous que le serveur envoie un en-tête
Content-Type: application/json
dans la réponse.Assurez-vous que votre hôte autorise Google à récupérer votre fichier Digital Asset Links. Si vous avez un fichier
robots.txt
, il doit permettre à l'agent Googlebot de récupérer/.well-known/assetlinks.json
. La plupart des sites peuvent simplement autoriser n'importe quel agent automatisé à récupérer les fichiers du chemin/.well-known/
afin que d'autres services puissent accéder aux métadonnées de ces fichiers :User-agent: * Allow: /.well-known/
Déclarez l'association dans l'application Android.
Ajoutez la ligne suivante au fichier manifeste sous
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Ajoutez une ressource de chaîne
asset_statements
au fichierstrings.xml
. La chaîneasset_statements
est un objet JSON qui spécifie les fichiersassetlinks.json
à charger. Vous devez échapper les apostrophes et les guillemets que vous utilisez dans la chaîne. Exemple :<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
Publiez l'application sur le Google Play Store. Elle doit être publiée sur le canal public pour que les associations puissent être récupérées.
(Facultatif) Remplissez et envoyez le formulaire d'affiliation Smart Lock pour les mots de passe pour indiquer que vous avez suivi la procédure. Google vérifie régulièrement si les affiliations envoyées via le formulaire fonctionnent réellement et peut vous contacter en cas de problème.
Une fois la validation terminée, les utilisateurs de votre application peuvent enregistrer leurs identifiants sur votre application ou sur votre site Web, et être automatiquement connectés aux deux.
Exemple: Associer plusieurs applications à un site Web
Vous pouvez associer plusieurs applications à un site Web en spécifiant chaque application dans le fichier Digital Assets Link. Par exemple, pour associer les applications com.example
et com.example.pro
au site https://signin.example.com/
, spécifiez les deux applications dans le fichier JSON hébergé sur 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"
]
}
}]
Ensuite, déclarez l'association dans les deux applications:
Ajoutez la ligne suivante au fichier manifeste sous
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Ajoutez la ressource de chaîne suivante au fichier
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>
Exemple: Associer des applications à plusieurs sites Web
Vous pouvez associer des applications à plusieurs sites Web en spécifiant chaque site dans le fichier Digital Assets Link et en hébergeant le fichier sur chaque site. Par exemple, pour associer les applications com.example
et com.example.pro
au site https://signin.example.com/
et https://m.example.com/
, spécifiez les applications et les deux sites dans le fichier JSON hébergé à l'adresse 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"
]
}
}]
Ensuite, dans le fichier JSON hébergé à l'adresse https://m.example.com/.well-known/assetlinks.json
, incluez le fichier Digital Asset Links principal:
[{
"include": "https://signin.example.com/.well-known/assetlinks.json"
}]
Enfin, déclarez l'association dans les deux applications:
Ajoutez la ligne suivante au fichier manifeste sous
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Ajoutez la ressource de chaîne suivante au fichier
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>