Jeśli Twoja aplikacja, która korzysta z funkcji Smart Lock na hasła, korzysta z bazy danych użytkownika lub jeśli aplikacja bądź witryna korzystają z usług sfederowanych dostawców logowania, jako Logowania przez Google – możesz powiązać aplikację z witryną, aby użytkownicy zapisują swoje dane logowania raz, a następnie automatycznie logują się zarówno aplikacji i strony internetowej.
Aby powiązać aplikację z witryną, zadeklaruj powiązania, hostując plik JSON Digital Asset Links w Twojej witrynie, dodając link do pliku Digital Asset Link do pliku manifestu aplikacji.
Jeśli umieścisz w swojej witrynie deklarację dotyczącą linków cyfrowych, Twoją witrynę, aby udostępnić autouzupełnianie z aplikacją 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 np. zadeklarować, że witryny
https://signin.example.comi aplikacja na Androida z nazwą pakietucom.examplemoże współdzielić logowanie dane logowania, utwórz plik o nazwieassetlinks.jsonz następującymi treść:[{ "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
relationjest tablicą jednego lub większej liczby ciągów tekstowych opisujących relacji. Deklarowanie, że aplikacje i witryny korzystają z tego samego loginu dane logowania, określ ciągdelegate_permission/common.get_login_credsPole
targetto obiekt określający zasób, który zgodnie z deklaracją . Te pola identyfikują witrynę:namespacewebsiteAdres URL witryny w formacie
https://domain[:optional_port]; w przypadku na przykładhttps://www.example.com.domain musi być w pełni kwalifikowany. Wartość optional_port należy pominąć, jeśli używasz portu 443 w HTTPS.
Elementem docelowym
sitemoże być tylko domena główna: nie można by ograniczyć powiązanie aplikacji do konkretnego podkatalogu. Nie dodawaj np. ukośnik na końcu adresu URL.Subdomeny nie są uważane za dopasowane: to znaczy, jeśli określisz atrybut domain jako
www.example.com, domena Usługawww.counter.example.comnie jest powiązana z Twoją aplikacją.Te pola identyfikują aplikację na Androida:
namespaceandroid_apppackage_nameNazwa pakietu zadeklarowana w pliku manifestu aplikacji. Przykład: com.example.androidsha256_cert_fingerprintsOdciski cyfrowe SHA256 certyfikatu podpisywania aplikacji. Dostępne opcje użyj następującego polecenia, aby wygenerować odcisk cyfrowy: $ keytool -list -v -keystore my-release-key.keystore
Zapoznaj się z informacjami o linkach do zasobów cyfrowych. .
Umieść plik JSON protokołu Digital Assets Link w następującej lokalizacji na stronie domena 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.Plik Digital Assets Link musi mieć typ MIME JSON. Upewnij się, serwer wysyła w odpowiedzi nagłówek
Content-Type: application/json.Upewnij się, że Twój dostawca hostingu pozwala Google na pobranie Twojego linku do zasobu cyfrowego . Jeśli masz plik
robots.txt, musi on zezwalać agentowi Googlebot na pobierz/.well-known/assetlinks.json. Większość witryn pozwala na automatyczny klient do pobierania plików w ścieżce/.well-known/, tak by pozostałe usługi mogą uzyskać dostęp do metadanych w tych plikach:User-agent: * Allow: /.well-known/
Zadeklaruj powiązanie w aplikacji na Androida.
Dodaj ten wiersz do pliku manifestu w
<application>:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />Dodaj zasób ciągu znaków
asset_statementsdo plikustrings.xml. Ciąg znakówasset_statementsto obiekt JSON, który określa Pliki (assetlinks.json) do wczytania. Musisz uciec od wszelkich apostrofów cudzysłowów używanych w ciągu znaków. 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
Opublikuj aplikację w Sklepie Google Play. muszą być dostępne publicznie. aby umożliwić promowanie powiązań.
(Opcjonalnie) Wypełnij i prześlij Formularz połączenia z funkcją Smart Lock na hasła, aby potwierdzić, że korzystasz z tej usługi. z całego procesu. Od czasu do czasu Google sprawdza, czy powiązania przesłany za pomocą formularza faktycznie działa i może się z Tobą skontaktować w przypadku .
Po zakończeniu weryfikacji użytkownicy aplikacji będą mogli zapisać swoje dane logowania do aplikacji lub witryny i automatycznie logować się w obu tych usługach.
Przykład: powiązanie wielu aplikacji z witryną
Możesz powiązać wiele aplikacji z witryną, określając każdą aplikację w
Plik Digital Assets Link. Aby na przykład powiązać com.example i
com.example.pro aplikacje z witryną pod adresem https://signin.example.com/ – określ
obie aplikacje w pliku JSON przechowywanym na
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 ten wiersz do pliku manifestu w
<application>:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />Dodaj do pliku
strings.xmlten zasób z ciągami 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 witrynami
Możesz powiązać aplikacje z wieloma witrynami, określając każdą z nich w
Plik Digital Assets Link i hosting go w każdej witrynie. Aby na przykład:
powiązanie aplikacji com.example i com.example.pro z witryną pod adresem
https://signin.example.com/ i https://m.example.com/, określ
aplikacje i obie witryny w pliku JSON przechowywanym na
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 przechowywanym na
https://m.example.com/.well-known/assetlinks.json, uwzględnij podstawowy
Plik linków zasobów:
[{
"include": "https://signin.example.com/.well-known/assetlinks.json"
}]
Na koniec zadeklaruj powiązanie w obu aplikacjach:
Dodaj ten wiersz do pliku manifestu w
<application>:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />Dodaj do pliku
strings.xmlten zasób z ciągami znaków:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>