Automatische Anmeldung in Apps und auf Websites aktivieren

Wenn Ihre App, die Smart Lock für Passwörter verwendet, eine Nutzerdatenbank mit Ihrer Website teilt oder wenn Ihre App und Ihre Website föderierte Anmeldeanbieter wie Google Log-in verwenden, können Sie die App mit der Website verknüpfen, sodass Nutzer ihre Anmeldedaten einmal speichern und sich dann automatisch sowohl in der App als auch auf der Website anmelden.

Wenn Sie eine App mit einer Website verknüpfen möchten, müssen Sie Verknüpfungen deklarieren, indem Sie eine JSON-Datei mit Digital Asset Links auf Ihrer Website hosten und einen Link zur Digital Asset Link-Datei in das Manifest Ihrer App einfügen.

Wenn du eine Erklärung zu Digital Asset Links auf deiner Website hostest, können dort auch Autofill-Daten mit deiner App geteilt werden, wenn Android 8.0 oder höher ausgeführt wird.

Voraussetzungen

Die Anmeldedomain Ihrer Website muss über HTTPS verfügbar sein.

App mit Ihrer Website verknüpfen

  1. Erstellen Sie eine Digital Asset Links-JSON-Datei.

    Wenn Sie beispielsweise angeben möchten, dass die Website https://signin.example.com und eine Android-App mit dem Paketnamen com.example Anmeldedaten freigeben können, erstellen Sie eine Datei mit dem Namen assetlinks.json und dem folgenden Inhalt:

    [{
      "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"
        ]
      }
     }]
    

    Das Feld relation ist ein Array aus einem oder mehreren Strings, die die deklarierte Beziehung beschreiben. Geben Sie den String delegate_permission/common.get_login_creds an, um zu deklarieren, dass Anwendungen und Websites Anmeldedaten gemeinsam nutzen.

    Das Feld target ist ein Objekt, das den Inhalt angibt, für den die Deklaration gilt. Die folgenden Felder identifizieren eine Website:

    namespace web
    site

    Die URL der Website im Format https://domain[:optional_port], z. B. https://www.example.com.

    domain muss voll qualifiziert sein und optional_port muss weggelassen werden, wenn Port 443 für HTTPS verwendet wird.

    Ein site-Ziel kann nur eine Stammdomain sein. Eine Anwendungsverknüpfung kann nicht auf ein bestimmtes Unterverzeichnis beschränkt werden. Die URL darf keinen Pfad enthalten, z. B. keinen Schrägstrich.

    Subdomains werden nicht als übereinstimmend betrachtet. Wenn Sie also domain als www.example.com angeben, wird die Domain www.counter.example.com nicht mit Ihrer App verknüpft.

    Die folgenden Felder identifizieren eine Android-App:

    namespace android_app
    package_name Der im Manifest der App deklarierte Paketname. Beispiel: com.example.android
    sha256_cert_fingerprints Die SHA256-Fingerabdrücke des Signaturzertifikats Ihrer App. Sie können den folgenden Befehl verwenden, um den Fingerabdruck zu generieren:
    $ keytool -list -v -keystore my-release-key.keystore

    Weitere Informationen finden Sie in der Referenz zu Digital Asset Links.

  2. Hosten Sie die Digital Assets Link-JSON-Datei an folgendem Speicherort in der Anmeldedomain:

    https://domain[:optional_port]/.well-known/assetlinks.json

    Wenn Ihre Anmeldedomain beispielsweise signin.example.com lautet, hosten Sie die JSON-Datei unter https://signin.example.com/.well-known/assetlinks.json.

    Der MIME-Typ für die Digital Assets Link-Datei muss JSON sein. Achten Sie darauf, dass der Server in der Antwort einen Content-Type: application/json-Header sendet.

  3. Prüfe, ob dein Host Google erlaubt, deine Digital Asset Link-Datei abzurufen. Wenn du eine robots.txt-Datei hast, muss sie es dem Googlebot-Agent ermöglichen, /.well-known/assetlinks.json abzurufen. Auf den meisten Websites kann jeder automatische Agent Dateien im Pfad /.well-known/ abrufen, damit andere Dienste auf die Metadaten in diesen Dateien zugreifen können:

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

  4. Deklarieren Sie die Verknüpfung in der Android-App.

    1. Fügen Sie der Manifestdatei unter <application> die folgende Zeile hinzu:

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Fügen Sie der Datei strings.xml eine asset_statements-Stringressource hinzu. Der String asset_statements ist ein JSON-Objekt, das die zu ladenden assetlinks.json-Dateien angibt. Apostrophe und Anführungszeichen, die Sie im String verwenden, müssen mit Escapezeichen versehen werden. Beispiel:

        <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. Veröffentlichen Sie die App im Google Play Store. Es muss im öffentlichen Kanal veröffentlicht werden, damit Zuordnungen aufgenommen werden können.

  6. (Optional) Füllen Sie das Affiliate-Formular für Smart Lock for Passwords aus und reichen Sie es ein, um anzugeben, dass Sie den Vorgang ausgeführt haben. Google überprüft regelmäßig, ob über das Formular eingereichte Mitgliedschaften tatsächlich funktionieren, und kann dich bei Problemen kontaktieren.

Wenn die Bestätigung abgeschlossen ist, können Nutzer Ihrer Anwendung ihre Anmeldedaten entweder in der Anwendung oder auf Ihrer Website speichern und werden automatisch in beiden angemeldet.

Beispiel: Mehrere Apps mit einer Website verknüpfen

Sie können mehrere Apps mit einer Website verknüpfen, indem Sie jede App in der Datei „Digital Assets Link“ angeben. Wenn du beispielsweise die Apps com.example und com.example.pro mit der Website unter https://signin.example.com/ verknüpfen möchtest, gib beide Anwendungen in der unter https://signin.example.com/.well-known/assetlinks.json gehosteten JSON-Datei an:

[{
  "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"
    ]
  }
}]

Deklarieren Sie dann die Verknüpfung in beiden Apps:

  1. Fügen Sie der Manifestdatei unter <application> die folgende Zeile hinzu:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Fügen Sie der Datei strings.xml die folgende Stringressource hinzu:

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

Beispiel: Apps mit mehreren Websites verknüpfen

Sie können Apps mit mehreren Websites verknüpfen, indem Sie jede Website in der Digital Asset Link-Datei angeben und die Datei auf jeder Website hosten. Wenn du beispielsweise die Apps com.example und com.example.pro mit der Website unter https://signin.example.com/ und https://m.example.com/ verknüpfen möchtest, gib sowohl Apps als auch beide Websites in der JSON-Datei an, die unter https://signin.example.com/.well-known/assetlinks.json gehostet wird:

[{
  "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"
    ]
  }
}]

Fügen Sie dann in die unter https://m.example.com/.well-known/assetlinks.json gehostete JSON-Datei die primäre Digital Asset Links-Datei ein:

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

Deklarieren Sie abschließend die Verknüpfung in beiden Apps:

  1. Fügen Sie der Manifestdatei unter <application> die folgende Zeile hinzu:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Fügen Sie der Datei strings.xml die folgende Stringressource hinzu:

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