Włącz automatyczne logowanie w aplikacjach i na stronach

Jeśli Twoja aplikacja korzystająca z Smart Lock na hasła, udostępnia Twojej witrynie bazę danych użytkowników – lub jeśli Twoja aplikacja i witryna korzystają z usług dostawców logowania sfederowanego (np. Logowania Google) – możesz powiązać aplikację z witryną, aby użytkownicy mogli zapisać swoje dane logowania, a następnie automatycznie zalogować się zarówno do aplikacji, jak i do witryny.

Aby powiązać aplikację z witryną, zadeklaruj powiązania, hostując w swojej witrynie plik JSON protokołu Digital Asset Links i dodając link do pliku Digital Asset Link do pliku manifestu aplikacji.

Umieszczając w swojej witrynie deklarację Digital Asset Links, umożliwiasz też jej udostępnianie danych autouzupełniania na urządzeniach z Androidem 8.0 lub nowszym.

Wymagania wstępne

Domena logowania w Twojej witrynie musi być dostępna przez HTTPS.

Powiąż aplikację z witryną

  1. Utwórz plik JSON Digital Asset Links.

    Aby na przykład zadeklarować, że witryna https://signin.example.com i aplikacja na Androida o nazwie pakietu com.example mogą udostępniać dane logowania, utwórz plik o nazwie assetlinks.json z tą zawartością:

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

    Pole relation to tablica co najmniej jednego ciągu opisującego zadeklarowaną relację. Aby zadeklarować, że aplikacje i witryny mają dane logowania, podaj ciąg znaków delegate_permission/common.get_login_creds.

    Pole target to obiekt, który określa zasób, którego dotyczy deklaracja. Witryna zawiera te pola:

    namespace web
    site

    Adres URL witryny w formacie https://domain[:optional_port], na przykład https://www.example.com.

    domain musi być w pełni kwalifikowany, a optional_port musi być pomijany, jeśli używasz portu 443 na potrzeby HTTPS.

    Cel site może być tylko domeną główną: nie można ograniczyć powiązania aplikacji do konkretnego podkatalogu. Nie umieszczaj w adresie URL ścieżki, np. ukośnika.

    Subdomeny nie są zgodne, tzn. jeśli określisz właściwość domain jako www.example.com, domena www.counter.example.com nie będzie powiązana z Twoją aplikacją.

    Poniższe pola identyfikują aplikację na Androida:

    namespace android_app
    package_name Nazwa pakietu zadeklarowana w pliku manifestu aplikacji. na przykład com.example.android.
    sha256_cert_fingerprints Odciski cyfrowe SHA256 certyfikatu podpisywania aplikacji. Aby wygenerować odcisk palca, możesz użyć tego polecenia:
    $ keytool -list -v -keystore my-release-key.keystore

    Szczegółowe informacje znajdziesz w artykule o linkach do zasobów cyfrowych.

  2. Plik JSON protokołu Digital Asset Links hostuj w tej lokalizacji w domenie logowania:

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

    Jeśli na przykład Twoja domena logowania to signin.example.com, hostuj plik JSON pod adresem https://signin.example.com/.well-known/assetlinks.json.

    Typ MIME pliku Digital Asset Link musi być JSON. Serwer musi wysłać nagłówek Content-Type: application/json w odpowiedzi.

  3. Upewnij się, że Twój dostawca hostingu pozwala Google na pobieranie Twojego pliku Digital Asset Link. Jeśli masz plik robots.txt, musi on zezwolić Googlebotowi na pobranie /.well-known/assetlinks.json. Większość witryn może po prostu zezwolić każdemu zautomatyzowanemu agentowi na pobieranie plików w ścieżce /.well-known/, aby umożliwić innym usługom dostęp do metadanych w tych plikach:

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

  4. Zadeklaruj powiązanie w aplikacji na Androida.

    1. Dodaj do pliku manifestu ten wiersz w wierszu <application>:

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Dodaj zasób tekstowy asset_statements do pliku strings.xml. Ciąg asset_statements to obiekt JSON określający pliki assetlinks.json, które mają zostać załadowane. Musisz unikać apostrofów i cudzysłowów, których używasz w ciągu znaków. Przykład:

        <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. Opublikuj aplikację w Sklepie Google Play. Aby można było powiązać z nimi powiązania, trzeba je najpierw opublikować w kanale publicznym.

  6. (Opcjonalnie) Wypełnij i prześlij formularz przynależności do programu Smart Lock na hasła, aby zasygnalizować przejście przez ten proces. Od czasu do czasu Google sprawdza, czy powiązania zgłoszone za pomocą formularza faktycznie działają, i w razie problemów może się z Tobą kontaktować.

Po zakończeniu weryfikacji użytkownicy będą mogli zapisywać swoje dane logowania w aplikacji lub na stronie i automatycznie logować się na oba.

Przykład: łączenie wielu aplikacji z witryną

Możesz powiązać wiele aplikacji z witryną, określając każdą z nich w pliku Digital Asset Link. Aby na przykład powiązać aplikacje com.example i com.example.pro z witryną o https://signin.example.com/, określ obie aplikacje w pliku JSON przechowywanym na stronie 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"
    ]
  }
}]

Następnie zadeklaruj powiązanie w obu aplikacjach:

  1. Dodaj do pliku manifestu ten wiersz w wierszu <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Dodaj do pliku strings.xml ten ciąg znaków:

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

Przykład: powiązanie aplikacji z wieloma stronami internetowymi

Możesz powiązać aplikacje z wieloma witrynami, określając każdą z nich w pliku Digital Asset Links i hostując plik w każdej witrynie. Aby na przykład powiązać aplikacje com.example i com.example.pro z witryną https://signin.example.com/ i https://m.example.com/, określ zarówno aplikacje, jak i obie witryny w pliku JSON hostowanym przez 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"
    ]
  }
}]

Następnie w pliku JSON hostowanym przez https://m.example.com/.well-known/assetlinks.json dodaj główny plik Digital Asset Links:

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

Na koniec zadeklaruj powiązanie w obu aplikacjach:

  1. Dodaj do pliku manifestu ten wiersz w wierszu <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Dodaj do pliku strings.xml ten ciąg znaków:

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