Jeśli logowanie jednym dotknięciem spełnia Twoje potrzeby, rozważ jego użycie. One Tap ma zaktualizowany interfejs użytkownika i inne ulepszenia.

Włącz automatyczne logowanie w aplikacjach i witrynach internetowych

Jeśli Twoja aplikacja korzystająca z funkcji Smart Lock for Passwords udostępnia bazę danych użytkowników Twojej witrynie - lub jeśli Twoja aplikacja i witryna korzystają z federacyjnych dostawców logowania, takich jak Google Sign-In - możesz powiązać aplikację z witryną, aby użytkownicy zapisywali ich dane logowania raz, a następnie automatycznie zaloguj się w aplikacji i na stronie internetowej.

Aby powiązać aplikację z witryną internetową, zadeklaruj powiązania, udostępniając plik JSON z łączami zasobów cyfrowych w swojej witrynie i dodając link do pliku łącza zasobu cyfrowego w manifeście aplikacji.

Umieszczając w swojej witrynie deklarację dotyczącą łączy do zasobów cyfrowych, umożliwiasz również udostępnianie w witrynie danych autouzupełniania aplikacji w systemie Android 8.0 lub nowszym.

Wymagania wstępne

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

Powiąż aplikację ze swoją witryną

  1. Utwórz plik JSON z łączami zasobów cyfrowych .

    Na przykład, aby zadeklarować, że witryna https://signin.example.com i aplikacja na Androida o nazwie pakietu com.example mogą współużytkować dane logowania, utwórz plik o nazwie assetlinks.json z następującą 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 jest tablicą jednego lub więcej ciągów opisujących deklarowaną relację. Aby zadeklarować, że aplikacje i witryny współużytkują poświadczenia logowania, określ ciąg delegate_permission/common.get_login_creds .

    Pole target to obiekt określający zasób, którego dotyczy deklaracja. Następujące pola identyfikują witrynę internetową:

    namespace web
    site

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

    domain musi być w pełni kwalifikowana, a optional_port port musi zostać pominięty w przypadku korzystania z portu 443 dla protokołu HTTPS.

    site docelowa może być tylko domeną główną: nie można ograniczyć powiązania aplikacji do określonego podkatalogu. Nie umieszczaj ścieżki w adresie URL, takiej jak ukośnik na końcu.

    Subdomeny nie są uznawane za zgodne: to znaczy, jeśli określisz domain jako www.example.com , domena www.counter.example.com nie zostanie powiązana z Twoją aplikacją.

    Następujące pola identyfikują aplikację na Androida:

    namespace android_app
    package_name Nazwa pakietu zadeklarowana w manifeście aplikacji. Na przykład com.example.android
    sha256_cert_fingerprints Odciski palców SHA256 certyfikatu podpisywania aplikacji. Aby wygenerować odcisk palca, możesz użyć następującego polecenia:
    $ keytool -list -v -keystore my-release-key.keystore

    Szczegółowe informacje można znaleźć w odnośnikach do zasobów cyfrowych .

  2. Hostuj plik JSON Digital Assets Link w następującej lokalizacji w domenie logowania:

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

    Na przykład, jeśli Twoja domena signin.example.com to signin.example.com , signin.example.com plik JSON pod https://signin.example.com/.well-known/assetlinks.json .

    Typ MIME dla pliku łącza zasobów cyfrowych musi być JSON. Upewnij się, że serwer wysyła nagłówek Content-Type: application/json w odpowiedzi.

  3. Upewnij się, że Twój usługodawca hostingowy zezwala Google na pobranie Twojego pliku linku do zasobów cyfrowych. Jeśli masz plik robots.txt , musi on umożliwiać agentowi Googlebot pobranie /.well-known/assetlinks.json . Większość witryn może po prostu zezwolić dowolnemu automatycznemu agentowi na pobranie plików ze ścieżki /.well-known/ , aby inne usługi /.well-known/ dostęp do metadanych w tych plikach:

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

  4. Zadeklaruj powiązanie w aplikacji na Androida.

    1. Dodaj następujący wiersz do pliku manifestu w obszarze <application> :

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Dodaj asset_statements zasobu ciąg do strings.xml pliku. Ciąg asset_statements to obiekt JSON określający pliki assetlinks.json do załadowania. Musisz zmienić znaczenie wszelkich apostrofów i cudzysłowów, których używasz w ciągu. Na 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. Musi zostać opublikowany w kanale publicznym, aby można było wybrać skojarzenia.

  6. (Opcjonalnie) Wypełnij i prześlij formularz powiązania Smart Lock for Passwords, aby wskazać, że przeszedłeś przez ten proces. Google okresowo sprawdza, czy powiązania przesłane za pośrednictwem formularza rzeczywiście działają i może skontaktować się z Tobą w przypadku problemów.

Po zakończeniu weryfikacji użytkownicy Twojej aplikacji mogą zapisać swoje dane logowania w Twojej aplikacji lub w Twojej witrynie i automatycznie logować się w obu.

Przykład: powiąż wiele aplikacji z witryną

Możesz powiązać wiele aplikacji z witryną internetową, określając każdą aplikację w pliku łącza zasobów cyfrowych. Na przykład, aby powiązać aplikacje com.example i com.example.pro z witryną pod https://signin.example.com/ , określ obie aplikacje w pliku JSON hostowanym pod 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 następujący wiersz do pliku manifestu w obszarze <application> :

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Dodaj następujący zasób ciągu do pliku strings.xml :

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

Przykład: powiąż aplikacje z wieloma witrynami

Możesz powiązać aplikacje z wieloma witrynami internetowymi, określając każdą witrynę w pliku łącza zasobów cyfrowych i umieszczając plik w każdej witrynie. Na przykład, aby powiązać aplikacje com.example i com.example.pro z witryną pod https://signin.example.com/ i https://m.example.com/ , określ zarówno aplikacje, jak i obie witryny w Plik JSON hostowany pod 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 pod https://m.example.com/.well-known/assetlinks.json umieść główny plik łączy do zasobów cyfrowych:

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

Na koniec zadeklaruj powiązanie w obu aplikacjach:

  1. Dodaj następujący wiersz do pliku manifestu w obszarze <application> :

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Dodaj następujący zasób ciągu do pliku strings.xml :

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