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.com
i aplikacja na Androida z nazwą pakietucom.example
może współdzielić logowanie dane logowania, utwórz plik o nazwieassetlinks.json
z 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
relation
jest 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_creds
Pole
target
to obiekt określający zasób, który zgodnie z deklaracją . Te pola identyfikują witrynę:namespace
web
site
Adres 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
site
moż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.com
nie jest powiązana z Twoją aplikacją.Te pola identyfikują aplikację na Androida:
namespace
android_app
package_name
Nazwa pakietu zadeklarowana w pliku manifestu aplikacji. Przykład: com.example.android
sha256_cert_fingerprints
Odciski 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_statements
do plikustrings.xml
. Ciąg znakówasset_statements
to 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.xml
ten 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.xml
ten zasób z ciągami znaków:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>