Activer la connexion automatique entre les applications et les sites Web

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és tels que Google Sign-In, vous pouvez associer l'application au site Web pour que les utilisateurs enregistrent leurs identifiants une 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 et en ajoutant un lien vers ce fichier dans le fichier manifeste de votre application.

En hébergeant une déclaration de liens d'éléments numériques sur votre site Web, vous autorisez également celui-ci à partager des données de saisie automatique avec votre application lorsqu'elle s'exécute sous Android 8.0 ou version ultérieure.

Prérequis

Le domaine de connexion de votre site Web doit être disponible via HTTPS.

Associer votre application à votre site Web

  1. 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 avec le nom de package com.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 plusieurs chaînes décrivant la relation déclarée. Pour déclarer que les applications et les sites partagent des identifiants de connexion, spécifiez la chaîne delegate_permission/common.get_login_creds.

    Le champ target est un objet qui spécifie l'élément auquel s'applique la déclaration. Les champs suivants identifient un site Web:

    namespace web
    site

    URL du site Web, au format https://domain[:optional_port] (par exemple, https://www.example.com).

    La valeur domain doit être complète et la partie optional_port doit être omise si vous utilisez le port 443 pour HTTPS.

    Une cible site ne peut être qu'un domaine racine. Vous ne pouvez pas limiter l'association d'une application à un sous-répertoire spécifique. N'incluez pas de chemin d'accès dans l'URL, tel qu'une barre oblique.

    Les sous-domaines ne sont pas considérés comme identiques: si vous spécifiez domain comme www.example.com, le domaine www.counter.example.com n'est pas associé à votre application.

    Les champs suivants identifient une application Android:

    namespace android_app
    package_name Nom du package déclaré dans le fichier manifeste de l'application. Par exemple, com.example.android.
    sha256_cert_fingerprints Empreintes 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 les liens d'éléments numériques.

  2. Hébergez le fichier JSON Digital Assets Link à 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 dans https://signin.example.com/.well-known/assetlinks.json.

    Le type MIME du fichier Digital Assets Link doit être JSON. Assurez-vous que le serveur envoie un en-tête Content-Type: application/json dans la réponse.

  3. Assurez-vous que votre hôte autorise Google à récupérer votre fichier Digital Asset Link. Si vous disposez d'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/
    

  4. Déclarez l'association dans l'application Android.

    1. Ajoutez la ligne suivante au fichier manifeste sous <application>:

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Ajoutez une ressource de chaîne asset_statements au fichier strings.xml. La chaîne asset_statements est un objet JSON qui spécifie les fichiers assetlinks.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
      
  5. Publiez l'application sur le Google Play Store. Il doit être publié sur le canal public pour que les associations puissent être récupérées.

  6. (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 et peuvent vous contacter en cas de problème.

Une fois la validation terminée, les utilisateurs de votre application peuvent enregistrer leurs identifiants dans 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 chacune d'elles dans le fichier Digital Assets Link. Par exemple, pour associer les applications com.example et com.example.pro au site à l'adresse 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:

  1. Ajoutez la ligne suivante au fichier manifeste sous <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. 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

Pour associer des applications à plusieurs sites Web, spécifiez chaque site dans le fichier Digital Assets Link et hébergez 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 deux applications et les deux sites 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": "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é sur https://m.example.com/.well-known/assetlinks.json, incluez le fichier principal Digital Asset Links:

[{
  "include": "https://signin.example.com/.well-known/assetlinks.json"
}]

Enfin, déclarez l'association dans les deux applications:

  1. Ajoutez la ligne suivante au fichier manifeste sous <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. 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>