ワンタップサインインがニーズを満たしている場合は、代わりにそれを使用することを検討してください。 One Tapには、更新されたユーザーエクスペリエンスとその他の改善があります。

アプリやウェブサイト間で自動サインインを有効にする

Smart Lock for Passwordsを使用するアプリがユーザーデータベースをウェブサイトと共有している場合、またはアプリとウェブサイトがGoogleサインインなどのフェデレーションサインインプロバイダーを使用している場合は、アプリをウェブサイトに関連付けて、ユーザーが資格情報を保存できるようにすることができます一度、アプリとウェブサイトの両方に自動的にサインインします。

アプリをウェブサイトに関連付けるには、ウェブサイトでデジタルアセットリンクJSONファイルをホストし、アプリのマニフェストにデジタルアセットリンクファイルへのリンクを追加して、関連付けを宣言します。

ウェブサイトでデジタルアセットリンク宣言をホストすることで、Android 8.0以降で実行しているときに、ウェブサイトがアプリと自動入力データを共有できるようになります。

前提条件

Webサイトのサインインドメインは、HTTPSを介して利用できる必要があります。

アプリをウェブサイトに関連付ける

  1. Digital Asset LinksJSONファイルを作成します。

    たとえば、ウェブサイトhttps://signin.example.comとパッケージ名com.example Androidアプリがサインイン資格情報を共有できることをassetlinks.jsonは、次の内容の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フィールドは、宣言されている関係を説明する1つ以上の文字列の配列です。アプリとサイトがサインインクレデンシャルを共有することを宣言するには、文字列delegate_permission/common.get_login_creds指定します。

    targetフィールドは、宣言が適用されるアセットを指定するオブジェクトです。次のフィールドはWebサイトを識別します。

    namespace web
    site

    https:// domain [: optional_port ] ;の形式のWebサイトのURLたとえば、 https://www.example.comです。

    domainは完全修飾されている必要があります。HTTPSにポート443を使用するoptional_portは、 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

    詳細については、 Digital AssetLinksリファレンス参照してください。

  2. サインインドメインの次の場所でDigitalAssets LinkJSONファイルをホストします:

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

    たとえば、サインインドメインがsignin.example.com場合、JSONファイルをhttps://signin.example.com/.well-known/assetlinks.jsonでホストしhttps://signin.example.com/.well-known/assetlinks.json

    Digital AssetsLinkファイルの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文字列は、ロードする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. アプリをGooglePlayストアに公開します。アソシエーションをピックアップするには、パブリックチャネルでリリースする必要があります。

  6. (オプション) Smart Lock for Passwordsアフィリエーションフォームに記入して送信し、プロセスを完了したことを示します。 Googleは、フォームから送信されたアフィリエーションが実際に機能するかどうかを定期的にチェックし、問題が発生した場合に連絡する場合があります。

確認が完了すると、アプリのユーザーはアプリまたはウェブサイトのいずれかに自分の資格情報を保存し、両方に自動的にサインインできます。

例:複数のアプリをウェブサイトに関連付ける

Digital Assets Linkファイルで各アプリを指定することにより、複数のアプリをWebサイトに関連付けることができます。例えば、関連付けるため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ファイルで各Webサイトを指定し、各Webサイトでファイルをホストすることにより、アプリを複数のWebサイトに関連付けることができます。例えば、関連付けるため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ファイルに、プライマリDigital AssetLinksファイルを含めます。

[{
  "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>