如果一鍵登錄滿足您的需求,請考慮改用它。一鍵式更新了用戶體驗,並進行了其他改進。

啟用跨應用和網站的自動登錄

如果使用Smart Lock for Passwords的應用程序與您的網站共享用戶數據庫,或者如果您的應用程序和網站使用聯合登錄提供商(例如Google Sign-In),則可以將該應用程序與網站相關聯,以便用戶保存其憑據一次,然後自動登錄該應用程序和網站。

要將應用程序與網站關聯,請通過在網站上託管Digital Asset Links JSON文件並在應用程序清單中添加指向Digital Asset Link文件的鏈接來聲明關聯。

通過在網站上託管數字資產鏈接聲明,您還可以使網站在Android 8.0及更高版本上運行時,可以與您的應用共享自動填充數據。

先決條件

您網站的登錄域必須通過HTTPS可用。

將您的應用與您的網站相關聯

  1. 創建一個數字資產鏈接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

    網站的URL,格式為https:// domain [: optional_port ] ;例如https://www.example.com

    domain必須是完全合格的。使用端口443進行HTTPS時,必須省略optional_port

    site目標只能是根域:您不能將應用程序關聯限製到特定的子目錄。 URL中不要包含路徑,例如斜杠。

    子域不被認為是匹配的:也就是說,如果您將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

    有關詳細信息,請參見“數字資產鏈接”參考

  2. 在登錄域上的以下位置託管Digital Assets Link JSON文件:

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

    例如,如果您的登錄域為signin.example.com ,則將JSON文件託管在https://signin.example.com/.well-known/assetlinks.json

    數字資產鏈接文件的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. asset_statements字符串資源添加到strings.xml文件。 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
      
  5. 將應用發佈到Google Play商店。需要在公共渠道中發布它,以獲取協會。

  6. (可選)填寫並提交“ 智能密碼鎖”從屬關係表,以表明您已完成此過程。 Google會定期檢查通過表單提交的從屬關係是否有效,如果出現問題,可能會與您聯繫。

驗證完成後,您的應用程序用戶可以將其憑據保存在您的應用程序或網站上,並自動登錄到兩者。

示例:將多個應用程序與一個網站相關聯

您可以通過在Digital Assets Link文件中指定每個應用程序來將多個應用程序與一個網站相關聯。例如,要將com.examplecom.example.pro應用程序與位於https://signin.example.com/的網站相關聯, https://signin.example.com/https://signin.example.com/.well-known/assetlinks.json託管的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://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>