Если ваше приложение, использующее Smart Lock для паролей, использует базу данных пользователей вашего веб-сайта или если ваше приложение и веб-сайт используют интегрированные поставщики входа, такие как Google Sign-In, вы можете связать приложение с веб-сайтом, чтобы пользователи сохраняли свои учетные данные. один раз, а затем автоматически войдите в приложение и на веб-сайт.
Чтобы связать приложение с веб-сайтом, объявите ассоциации, разместив JSON-файл Digital Asset Links на своем веб-сайте и добавив ссылку на файл Digital Asset Link в манифест вашего приложения.
Размещая декларацию о ссылках на цифровые активы на своем веб-сайте, вы также позволяете своему веб-сайту обмениваться данными автозаполнения с вашим приложением при работе на 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 должен быть полностью определенным, а optional_port должен быть опущен при использовании порта 443 для HTTPS.
Целевым
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 получить ваш файл ссылки на цифровые активы. Если у вас есть файл
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
:
[{
"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>