Aktifkan login otomatis di seluruh aplikasi dan situs

Jika aplikasi Anda yang menggunakan Smart Lock untuk Sandi membagikan database pengguna ke situs Anda—atau jika aplikasi dan situs Anda menggunakan penyedia login gabungan seperti Login dengan Google—Anda dapat mengaitkan aplikasi tersebut dengan situs, sehingga pengguna menyimpan kredensialnya satu kali, lalu otomatis login ke aplikasi dan situs.

Untuk mengaitkan aplikasi dengan situs, deklarasikan pengaitan dengan menghosting file JSON Digital Asset Links di situs Anda, dan tambahkan link ke file Digital Asset Link ke manifes aplikasi Anda.

Dengan menghosting deklarasi Digital Asset Links di situs, Anda juga memungkinkan situs membagikan data isi otomatis dengan aplikasi saat berjalan di Android 8.0 dan yang lebih baru.

Prasyarat

Domain login situs Anda harus tersedia melalui HTTPS.

Mengaitkan aplikasi dengan situs

  1. Buat file JSON Digital Asset Links.

    Misalnya, untuk mendeklarasikan bahwa situs https://signin.example.com dan aplikasi Android dengan nama paket com.example dapat berbagi kredensial login, buat file bernama assetlinks.json dengan konten berikut:

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

    Kolom relation adalah array dari satu atau beberapa string yang menjelaskan hubungan yang dideklarasikan. Untuk mendeklarasikan bahwa aplikasi dan situs berbagi kredensial login, tentukan string delegate_permission/common.get_login_creds.

    Kolom target adalah objek yang menentukan aset yang diterapkan dalam deklarasi. Kolom berikut mengidentifikasi situs:

    namespace web
    site

    URL situs, dalam format https://domain[:optional_port]; misalnya https://www.example.com.

    domain harus sepenuhnya memenuhi syarat, dan optional_port harus dihilangkan saat menggunakan port 443 untuk HTTPS.

    Target site hanya dapat berupa domain root: Anda tidak dapat membatasi pengaitan aplikasi ke subdirektori tertentu. Jangan sertakan jalur dalam URL, seperti garis miring.

    Subdomain tidak dianggap cocok: yaitu, jika Anda menentukan domain sebagai www.example.com, domain www.counter.example.com tidak akan dikaitkan dengan aplikasi Anda.

    Kolom berikut mengidentifikasi aplikasi Android:

    namespace android_app
    package_name Nama paket yang dideklarasikan dalam manifes aplikasi. Misalnya, com.example.android
    sha256_cert_fingerprints Sidik jari SHA256 dari sertifikat penandatanganan aplikasi Anda. Anda dapat menggunakan perintah berikut untuk membuat sidik jari:
    $ keytool -list -v -keystore my-release-key.keystore

    Lihat referensi Digital Asset Links untuk mengetahui detailnya.

  2. Hosting file JSON Digital Assets Link di lokasi berikut pada domain login:

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

    Misalnya, jika domain login Anda adalah signin.example.com, hosting file JSON di https://signin.example.com/.well-known/assetlinks.json.

    Jenis MIME untuk file Link Aset Digital harus JSON. Pastikan server mengirimkan header Content-Type: application/json dalam respons.

  3. Pastikan host Anda mengizinkan Google untuk mengambil file Digital Asset Link Anda. Jika Anda memiliki file robots.txt, file tersebut harus mengizinkan agen Googlebot untuk mengambil /.well-known/assetlinks.json. Sebagian besar situs dapat mengizinkan agen otomatis untuk mengambil file di jalur /.well-known/ sehingga layanan lainnya dapat mengakses metadata dalam file tersebut:

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

  4. Mendeklarasikan pengaitan di aplikasi Android.

    1. Tambahkan baris berikut ke file manifes di bagian <application>:

        <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
      
    2. Tambahkan resource string asset_statements ke file strings.xml. String asset_statements adalah objek JSON yang menentukan file assetlinks.json yang akan dimuat. Anda harus meng-escape apostrof dan tanda kutip yang Anda gunakan dalam string. Contoh:

        <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. Publikasikan aplikasi ke Google Play Store. Atribut ini harus dirilis di saluran publik agar asosiasi dapat diambil.

  6. (Opsional) Lengkapi dan kirimkan formulir afiliasi Smart Lock untuk Sandi untuk menunjukkan bahwa Anda telah melalui proses tersebut. Google secara berkala memeriksa apakah afiliasi yang dikirimkan melalui formulir benar-benar berfungsi dan mungkin akan menghubungi Anda jika ada masalah.

Setelah verifikasi selesai, pengguna aplikasi dapat menyimpan kredensial mereka di aplikasi atau situs Anda dan secara otomatis login ke keduanya.

Contoh: Mengaitkan beberapa aplikasi dengan situs

Anda dapat mengaitkan beberapa aplikasi ke situs dengan menentukan setiap aplikasi di file Digital Assets Link. Misalnya, untuk mengaitkan aplikasi com.example dan com.example.pro dengan situs di https://signin.example.com/, tentukan kedua aplikasi dalam file JSON yang dihosting di 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"
    ]
  }
}]

Kemudian, deklarasikan pengaitan di kedua aplikasi:

  1. Tambahkan baris berikut ke file manifes di bagian <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Tambahkan resource string berikut ke file strings.xml:

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

Contoh: Mengaitkan aplikasi dengan beberapa situs

Anda dapat mengaitkan aplikasi dengan beberapa situs dengan menentukan setiap situs di file Digital Assets Link dan menghosting file di setiap situs. Misalnya, untuk menghubungkan aplikasi com.example dan com.example.pro dengan situs di https://signin.example.com/ dan https://m.example.com/, tentukan aplikasi dan kedua situs di file JSON yang dihosting di 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"
    ]
  }
}]

Kemudian, dalam file JSON yang dihosting di https://m.example.com/.well-known/assetlinks.json, sertakan file Digital Asset Links utama:

[{
  "include": "https://signin.example.com/.well-known/assetlinks.json"
}]

Terakhir, deklarasikan pengaitan di kedua aplikasi:

  1. Tambahkan baris berikut ke file manifes di bagian <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
    
  2. Tambahkan resource string berikut ke file strings.xml:

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