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 o se la tua app e il tuo sito web utilizzano provider di accesso federati quali come Accedi con Google, puoi associare l'app al sito web in modo che salvano le proprie credenziali una volta e poi accedono automaticamente sia dell'app e del sito web.

Per associare un'app a un sito web, dichiara le associazioni ospitando un Digital Asset Links sul tuo sito web e aggiungendo un link al file Digital Asset Link al file manifest della tua app.

Se ospiti una dichiarazione relativa ai link agli asset digitali sul tuo sito web, attivi anche sul tuo sito web per condividere la funzionalità di compilazione automatica i dati con la tua app con Android 8.0 e versioni successive.

Prerequisiti

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

Associa 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 per Android con nome di pacchetto com.example può condividere l'accesso credenziali, crea un file denominato assetlinks.json con quanto segue 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 il relazione dichiarata. Per dichiarare che app e siti condividono l'accesso credenziali, specifica la stringa delegate_permission/common.get_login_creds.

    Il campo target è un oggetto che specifica la risorsa oggetto della dichiarazione a cui si applica. I seguenti campi identificano un sito web:

    namespace web
    site

    L'URL del sito web, nel formato https://domain[:optional_port]; della ad esempio https://www.example.com.

    domain deve essere pienamente idonea. e Se si utilizza la porta 443 per, è necessario omettere optional_port HTTPS.

    Un target site può essere solo un dominio principale: non puoi Limita l'associazione di un'app a una sottodirectory specifica. Non includere un percorso dell'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 è 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 utilizza questo comando per generare l'impronta:
    $ keytool -list -v -keystore my-release-key.keystore

    Consulta il riferimento Digital Asset Links per maggiori dettagli.

  2. Ospita il file JSON Digital Resources Link nella seguente posizione sulla 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 per il file Digital Asset Link deve essere JSON. Assicurati che il server invia un'intestazione Content-Type: application/json nella risposta.

  3. Assicurati che l'host consenta a Google di recuperare il tuo Digital Asset Link . Se hai un file robots.txt, questo deve consentire all'agente Googlebot di recupera /.well-known/assetlinks.json. La maggior parte dei siti consente semplicemente agente automatico di recuperare i file nel percorso /.well-known/ in modo che possono accedere ai metadati contenuti nei 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 assetlinks.json file da caricare. Devi evitare qualsiasi apostrofi le virgolette utilizzate 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. Pubblica l'app sul Google Play Store. Deve essere rilasciato pubblicamente canale per la selezione delle associazioni.

  6. (Facoltativo) Completa e invia Modulo di affiliazione di Smart Lock per password per indicare che hai partecipato durante il processo. Google controlla periodicamente se ci sono affiliazioni il modulo funziona e potrebbe contattarti in caso di per risolvere problemi di produzione e facilità d'uso.

Al termine della verifica, gli utenti della tua app potranno salvare le proprie credenziali nella tua app o sul tuo sito web e ad accedere automaticamente a entrambe.

Esempio: associare più app a un sito web

Puoi associare più app a un sito web specificando ogni app nella sezione File Digital Asset Link. Ad esempio, per associare com.example e com.example.pro app con il sito all'indirizzo https://signin.example.com/, specifica entrambe le app nel file JSON ospitato 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 di 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 Digital Asset Link e hosting del 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 le app e 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 https://m.example.com/.well-known/assetlinks.json, includi il segmento di pubblico principale File link asset:

[{
  "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 di stringa al file strings.xml:

    <string name="asset_statements" translatable="false">
    [{
      \"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
    }]
    </string>