Attiva l'accesso automatico tra app e siti web

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

  1. 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 pacchetto com.example possono condividere le credenziali di accesso, crea un file denominato assetlinks.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 stringa delegate_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 dominio www.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.

  2. 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'indirizzo https://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.

  3. 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/
    

  4. Dichiara l'associazione nell'app Android.

    1. Aggiungi la seguente riga al file manifest in <application>:

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Aggiungi una risorsa stringa asset_statements al file strings.xml. La stringa asset_statements è un oggetto JSON che specifica i file assetlinks.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
      
  5. Pubblicare l'app sul Google Play Store. Perché le associazioni vengano prese, devono essere rilasciate nel canale pubblico.

  6. (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:

  1. Aggiungi la seguente riga al file manifest in <application>:

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

  1. Aggiungi la seguente riga al file manifest in <application>:

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