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ą
Utwórz plik JSON Digital Asset Links.
Aby na przykład zadeklarować, że witryna
https://signin.example.com
i aplikacja na Androida o nazwie pakietucom.example
mogą udostępniać dane logowania, utwórz plik o nazwieassetlinks.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ówdelegate_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ładhttps://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
, domenawww.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.
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 adresemhttps://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.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/
Zadeklaruj powiązanie w aplikacji na Androida.
Dodaj do pliku manifestu ten wiersz w wierszu
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Dodaj zasób tekstowy
asset_statements
do plikustrings.xml
. Ciągasset_statements
to obiekt JSON określający plikiassetlinks.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
Opublikuj aplikację w Sklepie Google Play. Aby można było powiązać z nimi powiązania, trzeba je najpierw opublikować w kanale publicznym.
(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:
Dodaj do pliku manifestu ten wiersz w wierszu
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
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:
Dodaj do pliku manifestu ten wiersz w wierszu
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
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>