One Tap 로그인이 요구 사항을 충족하는 경우 대신 사용하는 것이 좋습니다. One Tap에는 업데이트 된 사용자 경험과 기타 개선 사항이 있습니다.

앱과 웹 사이트에서 자동 로그인 활성화

비밀번호 대용 Smart Lock을 사용하는 앱이 웹 사이트와 사용자 데이터베이스를 공유하는 경우 또는 앱과 웹 사이트에서 Google 로그인과 같은 통합 로그인 공급자를 사용하는 경우 사용자가 자격 증명을 저장할 수 있도록 앱을 웹 사이트와 연결할 수 있습니다. 한 번만하면 앱과 웹 사이트에 자동으로 로그인됩니다.

앱을 웹 사이트에 연결하려면 웹 사이트에서 Digital Asset Links JSON 파일을 호스팅하고 앱 매니페스트에 Digital Asset Link 파일에 대한 링크를 추가하여 연결을 선언합니다.

웹 사이트에서 Digital Asset Links 선언을 호스팅하면 Android 8.0 이상에서 실행될 때 웹 사이트에서 앱과 자동 완성 데이터를 공유 할 수 있습니다.

전제 조건

웹 사이트의 로그인 도메인은 HTTPS를 통해 사용할 수 있어야합니다.

웹 사이트와 앱 연결

  1. Digital Asset Links JSON 파일을 생성합니다.

    예를 들어 웹 사이트 https://signin.example.com 과 패키지 이름이 com.example 인 Android 앱이 로그인 자격 증명을 공유 할 수 있음을 선언하려면 다음 콘텐츠가 포함 된 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

    https:// domain [: optional_port ] 형식의 웹 사이트 URL; 예 : https://www.example.com .

    domain 은 정규화되어야하며 HTTPS에 포트 443을 사용하는 경우 optional_port 를 생략해야합니다.

    site 대상은 루트 도메인 만 될 수 있습니다. 앱 연결을 특정 하위 디렉터리로 제한 할 수 없습니다. URL에 후행 슬래시와 같은 경로를 포함하지 마십시오.

    하위 도메인은 일치하는 것으로 간주되지 않습니다. 즉, domainwww.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. 로그인 도메인의 다음 위치에서 Digital Assets Link JSON 파일을 호스팅합니다.

    https://domain[:optional_port]/.well-known/assetlinks.json

    예를 들어 로그인 도메인이 signin.example.com 이면 https://signin.example.com/.well-known/assetlinks.json 에서 JSON 파일을 호스팅합니다.

    Digital Assets Link 파일의 MIME 유형은 JSON이어야합니다. 서버가 응답에 Content-Type: application/json 헤더를 전송하는지 확인하십시오.

  3. 호스트가 Google이 Digital Asset Link 파일을 검색하도록 허용하는지 확인합니다. 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. strings.xml 파일에 asset_statements 문자열 리소스를 추가합니다. asset_statements 문자열은로드 할 assetlinks.json 파일을 지정하는 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 스토어에 앱을 게시합니다. 협회를 픽업하려면 공개 채널에 공개해야합니다.

  6. (선택 사항) 비밀번호 대용 Smart Lock 제휴 양식 을 작성하고 제출하여 절차를 완료했음을 나타냅니다. Google은 양식을 통해 제출 한 제휴가 실제로 작동하는지 정기적으로 확인하고 문제가있는 경우 연락 할 수 있습니다.

확인이 완료되면 앱 사용자는 앱 또는 웹 사이트에 자격 증명을 저장하고 둘 다에 자동으로 로그인 할 수 있습니다.

예 : 웹 사이트에 여러 앱 연결

Digital Assets Link 파일에서 각 앱을 지정하여 여러 앱을 웹 사이트에 연결할 수 있습니다. 예를 들어, 연결하는 com.examplecom.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>
    

예 : 앱을 여러 웹 사이트와 연결

Digital Assets Link 파일에서 각 웹 사이트를 지정하고 각 웹 사이트에서 파일을 호스팅하여 앱을 여러 웹 사이트와 연결할 수 있습니다. 예를 들어 com.examplecom.example.pro 앱을 https://signin.example.com/https://m.example.com/ 의 사이트와 연결하려면 두 앱과 두 사이트를 모두 https://signin.example.com/.well-known/assetlinks.json 에서 호스팅되는 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"
    ]
  }
}]

그런 다음 https://m.example.com/.well-known/assetlinks.json 에서 호스팅되는 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>