Если ваше приложение, использующее Smart Lock для паролей, совместно использует базу данных пользователей с вашим веб-сайтом или если ваше приложение и веб-сайт используют поставщиков федеративного входа, таких как Google Sign-In, вы можете связать приложение с веб-сайтом, чтобы пользователи сохраняли свои учетные данные. один раз, а затем автоматически войдите как в приложение, так и на веб-сайт.
Чтобы связать приложение с веб-сайтом, объявите ассоциации, разместив файл JSON ссылок на цифровые активы на своем веб-сайте и добавив ссылку на файл ссылок на цифровые активы в манифест вашего приложения.
Размещая на своем веб-сайте объявление о ссылках на цифровые активы, вы также позволяете своему веб-сайту обмениваться данными автозаполнения с вашим приложением при работе на Android 8.0 и более поздних версиях.
Предпосылки
Домен входа вашего веб-сайта должен быть доступен через HTTPS.
Свяжите свое приложение с вашим сайтом
Создайте файл JSON со ссылками на цифровые активы .
Например, чтобы объявить, что веб-сайт
https://signin.example.com
и приложение Android с именем пакетаcom.example
могут совместно использовать учетные данные для входа, создайте файл с именем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
web
site
URL-адрес веб-сайта в формате
https:// domain [: optional_port ]
; например,https://www.example.com
.domain должен быть полностью определенным. При использовании порта 443 для HTTPS необходимо опустить optional_port .
Целевой
site
может быть только корневым доменом: вы не можете ограничить ассоциацию приложения определенным подкаталогом. Не включайте путь в URL-адрес, например косую черту в конце.Субдомены не считаются соответствующими: то есть, если вы укажете domain как
www.example.com
, доменwww.counter.example.com
не будет связан с вашим приложением.Следующие поля идентифицируют приложение для Android:
namespace
android_app
package_name
Имя пакета, объявленное в манифесте приложения. Например, com.example.android
sha256_cert_fingerprints
Отпечатки SHA256 сертификата подписи вашего приложения. Вы можете использовать следующую команду для создания отпечатка пальца: $ keytool -list -v -keystore my-release-key.keystore
Дополнительные сведения см. в справке по ссылкам на цифровые активы .
Разместите JSON-файл Digital Assets Link в следующем расположении домена входа:
https://domain[:optional_port]/.well-known/assetlinks.json
.Например, если ваш домен входа —
signin.example.com
, разместите файл JSON по адресуhttps://signin.example.com/.well-known/assetlinks.json
.Тип MIME для файла ссылки на цифровые активы должен быть JSON. Убедитесь, что сервер отправляет заголовок
Content-Type: application/json
в ответе.Убедитесь, что ваш хост разрешает Google извлекать ваш файл Digital Asset Link. Если у вас есть файл
robots.txt
, он должен позволять агенту Googlebot извлекать/.well-known/assetlinks.json
. Большинство сайтов могут просто разрешить любому автоматизированному агенту извлекать файлы по пути/.well-known/
, чтобы другие службы могли получить доступ к метаданным в этих файлах:User-agent: * Allow: /.well-known/
Объявите ассоциацию в приложении для Android.
Добавьте следующую строку в файл манифеста в
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Добавьте строковый ресурс
asset_statements
в файлstrings.xml
. Строкаasset_statements
— это объект JSON, указывающий загружаемые файлыassetlinks.json
. Вы должны избегать любых апострофов и кавычек, которые вы используете в строке. Например:<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
Опубликуйте приложение в Google Play Store. Его необходимо опубликовать в общедоступном канале, чтобы ассоциации были подхвачены.
(Необязательно) Заполните и отправьте форму присоединения к Smart Lock for Passwords, чтобы указать, что вы прошли через этот процесс. Google периодически проверяет, действительно ли работают аффилиации, отправленные через форму, и может связаться с вами в случае возникновения проблем.
После завершения проверки пользователи вашего приложения могут сохранить свои учетные данные либо в вашем приложении, либо на вашем веб-сайте и автоматически входить в оба приложения.
Пример. Связывание нескольких приложений с веб-сайтом
Вы можете связать несколько приложений с веб-сайтом, указав каждое приложение в файле ссылок на цифровые активы. Например, чтобы связать приложения com.example
и com.example.pro
с сайтом https://signin.example.com/
, укажите оба приложения в файле JSON, размещенном по адресу https://signin.example.com/.well-known/assetlinks.json
. 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"
]
}
}]
Затем объявите ассоциацию в обоих приложениях:
Добавьте следующую строку в файл манифеста в
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Добавьте следующий строковый ресурс в файл
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>
Пример. Связывание приложений с несколькими веб-сайтами
Вы можете связать приложения с несколькими веб-сайтами, указав каждый веб-сайт в файле ссылок на цифровые активы и разместив файл на каждом веб-сайте. Например, чтобы связать приложения com.example
и com.example.pro
с сайтом https://signin.example.com/
и https://m.example.com/
, укажите оба приложения и оба сайта в поле Файл JSON, размещенный по адресу 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"
]
}
}]
Затем в файл JSON, размещенный по адресу https://m.example.com/.well-known/assetlinks.json
, включите основной файл ссылок на цифровые активы:
[{
"include": "https://signin.example.com/.well-known/assetlinks.json"
}]
Наконец, объявите ассоциацию в обоих приложениях:
Добавьте следующую строку в файл манифеста в
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Добавьте следующий строковый ресурс в файл
strings.xml
:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://signin.example.com/.well-known/assetlinks.json\" }] </string>