如果您的應用程式使用密碼專用 Smart Lock,會與您的 Google 帳戶共用使用者資料庫 您的網站和網站採用聯合登入供應商 做為 Google 登入的 - 您可以將應用程式與網站建立關聯,讓 使用者儲存憑證一次,然後自動登入 應用程式和網站
如要將應用程式與網站建立關聯,請代管 網站上的 Digital Asset Links JSON 檔案,以及 在應用程式的資訊清單中加入 Digital Asset Link 檔案的連結。
在網站上代管 Digital Asset Links 宣告,等同於 共用自動填入功能的網站 我們會使用您的應用程式資料。
必要條件
網站的登入網域必須可透過 HTTPS 存取。
為應用程式和網站建立關聯
- 建立 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];的 例如:- https://www.example.com。- domain 必須完整。 使用通訊埠 443 時,必須省略 optional_port HTTPS - site指定目標只能是根網域:您無法限制應用程式與特定子目錄建立關聯。請勿在 網址中的路徑- 系統不會將子網域視為相符項目:也就是說,如果將 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 - 請參閱 Digital Asset Links 參考資料 。 
- 請在以下位置代管 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標頭。
- 確保主機允許 Google 擷取您的 Digital Asset Link 檔案。如果您有 - 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" />
- 在 - strings.xml檔案中加入- asset_statements字串資源。- 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 商店。必須對外公開 並透過頻道擷取關聯。 
- (選用) 填寫並提交 密碼專用 Smart Lock 關聯表單:表示您已參加 整個流程Google 會定期檢查聯盟關係 確實有效,如果 如要解決關聯問題,可用 Apriori 這類關聯規則學習技術和演算法 
完成驗證後,應用程式使用者就能將自己的憑證儲存至 應用程式或網站,並會自動登入這兩個網站。
範例:將多個應用程式與一個網站建立關聯
您可以在
Digital Assets Link 檔案。例如,為 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>
範例:將應用程式與多個網站建立關聯
您可以在
Digital Assets Link 檔案以及各個網站代管該檔案。舉例來說
為 com.example 和 com.example.pro 應用程式與以下網站建立關聯:
https://signin.example.com/ 和 https://m.example.com/,請指定
和兩個網站
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"
    ]
  }
}]
接著,在託管於
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>