必備條件

如要在應用程式和網站之間,透過 Credential Manager 實作流暢的登入體驗,首要前提是建立兩者之間的關聯,確保安全無虞。這是透過 Digital Asset Links 檔案達成,可讓憑證提供者在應用程式和網站之間安全地共用憑證。舉例來說,網站可以使用 Digital Asset Links 檔案,宣告與 Android 應用程式或其他網站共用憑證。使用數位資產連結,使用者就能享有流暢的登入體驗,並在相關聯的應用程式和網站中使用相同的已儲存憑證。

如要允許憑證提供者在應用程式和網站中通用密碼金鑰和密碼,請按照下列步驟為應用程式建立 Digital Asset Links 檔案:

建立名為 assetlinks.json 的檔案,並採用下列結構:

[
    {
    "relation" : [
        "<array_of_permissions_granted_to_app>"
    ],
    "target" : {
        "namespace" : "android_app",
        "package_name" : "<android_application_package_name>",
        "sha256_cert_fingerprints" : [
            "<sha256_certificate_fingerprint_of_signing_key>"
]
    }
}
]
  • relation:一或多個字串的陣列,用來描述要宣告的關係。如要宣告應用程式和網站共用登入憑證,請在陣列中指定下列關係:

    • delegate_permission/common.handle_all_urls:這項關係可啟用 Android 應用程式連結,讓 Android 應用程式處理特定網域的所有網頁網址。

    • delegate_permission/common.get_login_creds:這項關聯可讓網站和 Android 應用程式共用憑證。

  • target:指定聲明適用的資產。

    • target.namespace:設為 android_app
    • target.package_name:將此值設為應用程式資訊清單中宣告的套件名稱,例如 com.example.android
  • sha256_cert_fingerprints:應用程式簽署憑證的 SHA256 指紋。如要擷取應用程式的 SHA256 指紋,請參閱「宣告網站關聯」。

應用程式的目標範例如下:

[
  {
    "relation" : [
      "delegate_permission/common.handle_all_urls",
      "delegate_permission/common.get_login_creds"
    ],
    "target" : {
      "namespace" : "android_app",
      "package_name" : "com.example.android",
      "sha256_cert_fingerprints" : [
        SHA_HEX_VALUE
      ]
    }
  }
]

請在網站登入網域的以下位置代管 Digital Asset Links 檔案:

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

舉例來說,如果您的登入網域為 signin.example.com,請在以下位置代管檔案:https://signin.example.com/.well-known/assetlinks.json

Digital Asset Links 檔案的 MIME 類型必須為 JSON。確認伺服器會在回應中傳送 Content-Type: application/json 標頭,並將 HTTP 狀態設為 200

3. 允許擷取 Digital Asset Links 檔案

更新主機,允許 Google 擷取您的 Digital Asset Links 檔案。大多數網站會允許任何自動化代理程式擷取 /.well-known/ 路徑中的檔案,讓其他服務存取這些檔案內的中繼資料。

如果您有 robots.txt 檔案,請按照下列方式更新 robots.txt,允許網頁檢索器擷取 /.well-known/assetlinks.json

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

4. 更新應用程式資訊清單

在應用程式的資訊清單檔案中,於 <application> 下方新增下列程式碼:

<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />

5. 為密碼設定 Digital Asset Links

如果您使用 Credential Manager 管理密碼,必須完成額外步驟來設定數位資產連結。

新增物件,用於指定要載入的 assetlinks.json 檔案。您必須逸出在字串中使用的所有撇號和引號,如下例所示:

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

https://signin.example.com/.well-known/assetlinks.json 連結必須傳回 HTTP 200 回應,且 Content-Type 標頭為 application/json。如果回應包含 301302 HTTP 重新導向,或非 JSON Content-Type,驗證就會失敗。

以下範例顯示範例要求和預期的回應標頭:

> 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

後續步驟

新增必要依附元件並設定密碼金鑰的 Digital Asset Links 後,即可使用 Credential Manager 實作支援的驗證方法:密碼金鑰和「使用 Google 帳戶登入」。如要開始使用,請參閱下列開發人員指南: