如果您的應用程式使用密碼專用 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>