Attiva l'accesso automatico per app e siti web

Se la tua app che utilizza Smart Lock per password condivide un database di utenti con il tuo sito web oppure se l'app e il 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 volta e poi 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 aggiungendo un link al file Digital Asset Link al file manifest dell'app.

Se ospiti una dichiarazione di Digital Asset Links sul tuo sito web, consenti anche a quest'ultimo di condividere i dati di compilazione automatica con la tua app quando viene eseguita su Android 8.0 e versioni successive.

Prerequisiti

Il dominio di accesso del tuo sito web deve essere disponibile tramite HTTPS.

Associare l'app al 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 di pacchetto com.example possono condividere le credenziali di accesso, crea un file denominato assetlinks.json con i seguenti contenuti:

    [{
      "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 le app e i siti condividono le credenziali di accesso, specifica la stringa delegate_permission/common.get_login_creds.

    Il campo target è un oggetto che specifica la risorsa 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.

    Una destinazione site può essere solo un dominio principale: non puoi limitare l'associazione di un'app a una sottodirectory specifica. Non includere un percorso nell'URL, ad esempio una barra finale.

    I sottodomini non vengono considerati corrispondenti, ovvero, se specifichi domain come www.example.com, il dominio www.counter.example.com non viene associato alla tua app.

    I seguenti campi identificano un'app per 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 fingerprint 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

    Per ulteriori dettagli, consulta il riferimento sui link degli asset digitali.

  2. Ospita il file JSON Digital Assets Link nella seguente posizione nel 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 su https://signin.example.com/.well-known/assetlinks.json.

    Il tipo MIME per il 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 autorizzi Google a 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ò semplicemente consentire a qualsiasi agente automatico di recuperare i file nel percorso /.well-known/ in modo che altri servizi possano accedere ai metadati in quei file:

    User-agent: *
    Allow: /.well-known/
    

  4. Dichiara l'associazione nell'app per 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. Gli apostrofi e le virgolette utilizzati nella stringa devono essere preceduti dal carattere di escape. 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. Pubblica l'app sul Google Play Store. Deve essere rilasciato nel canale pubblico per poter recuperare le associazioni.

  6. (Facoltativo) Compila e invia il modulo di affiliazione di Smart Lock per password per indicare che hai seguito la procedura. Google verifica periodicamente se le affiliazioni inviate tramite il modulo funzionano effettivamente e potrebbero contattarti in caso di problemi.

Al termine della verifica, gli utenti della tua app possono salvare le proprie credenziali nella tua app o sul tuo sito web ed eseguire automaticamente l'accesso a entrambi.

Esempio: associare più app a un sito web

Puoi associare più app a un sito web specificando ciascuna 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 nel file JSON ospitato all'indirizzo 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

Puoi associare le app a più siti web specificando ciascun sito web nel file Digital Assets Link e ospitando il file su ciascun sito web. Ad esempio, per associare le app com.example e com.example.pro al sito all'indirizzo https://signin.example.com/ e https://m.example.com/, specifica entrambe le app e entrambi i siti nel file JSON ospitato all'indirizzo 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 Links 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>