Включите автоматический вход в приложения и на веб-сайты.

Если ваше приложение, использующее Smart Lock для паролей, использует базу данных пользователей вашего веб-сайта или если ваше приложение и веб-сайт используют интегрированные поставщики входа в систему, такие как Google Sign-In, вы можете связать приложение с веб-сайтом, чтобы пользователи сохраняли свои учетные данные. один раз, а затем автоматически войдите в приложение и на веб-сайт.

Чтобы связать приложение с веб-сайтом, объявите ассоциации, разместив JSON-файл Digital Asset Links на своем веб-сайте и добавив ссылку на файл Digital Asset Link в манифест вашего приложения.

Размещая декларацию о ссылках на цифровые активы на своем веб-сайте, вы также позволяете своему веб-сайту обмениваться данными автозаполнения с вашим приложением при работе на Android 8.0 и более поздних версиях.

Предварительные условия

Домен для входа на ваш сайт должен быть доступен через HTTPS.

Свяжите свое приложение с вашим веб-сайтом

  1. Создайте 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

    Подробности см. в справочнике по ссылкам на цифровые активы .

  2. Разместите 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 .

  3. Убедитесь, что ваш хост разрешает Google получить ваш файл ссылки на цифровые активы. Если у вас есть файл robots.txt , он должен позволять агенту Googlebot получать /.well-known/assetlinks.json . Большинство сайтов могут просто разрешить любому автоматизированному агенту извлекать файлы по пути /.well-known/ , чтобы другие службы могли получить доступ к метаданным в этих файлах:

    User-agent: *
    Allow: /.well-known/
    

  4. Объявите связь в приложении Android.

    1. Добавьте следующую строку в файл манифеста в разделе <application> :

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Добавьте строковый ресурс 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
      
  5. Опубликуйте приложение в Google Play Store. Его необходимо опубликовать в общедоступном канале, чтобы ассоциации могли его подхватить.

  6. (Необязательно) Заполните и отправьте форму подключения 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"
    ]
  }
}]

Затем объявите ассоциацию в обоих приложениях:

  1. Добавьте следующую строку в файл манифеста в разделе <application> :

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Добавьте следующий строковый ресурс в файл 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"
}]

Наконец, объявите ассоциацию в обоих приложениях:

  1. Добавьте следующую строку в файл манифеста в разделе <application> :

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Добавьте следующий строковый ресурс в файл strings.xml :

    <string name="asset_statements" translatable="false">
    [{
      \"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
    }]
    </string>