To set up credential sharing across multiple websites and multiple Android apps you must:
- Designate a primary domain: Choose one URL as the primary reference point for links.
- Create
assetlinks.json
files:- Primary domain: Create an
assetlinks.json
file on your primary domain that lists all domains sharing credentials. - Other domains: Create an
assetlinks.json
file on each of the other domains, each linking back to the primary domain.
- Primary domain: Create an
- Configure digital asset linking in each App's manifest: Set up each app to
link back to the
assetlinks.json
file in the primary domain.
In the following example, we designated example.com as the primary domain, and all other listed domains share credentials with example.com and across themselves.
- example.com (primary domain)
- example.org
- example.net
- myownpersonaldomain.com
The two apps with the following package names also share credentials with all the websites and between them:
com.example.android.myapplication
com.example.appname
Before setting up credential sharing you must complete the prerequisites.
To declare credential sharing across these websites and Android apps:
Create an
assetlinks.json
file with the following content:[ { "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "web", "site": "https://example.com" } }, { "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "web", "site": "https://example.org" } }, { "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "web", "site": "https://example.net" } }, { "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "web", "site": "https://myownpersonaldomain.com" } }, { "relation" : [ "delegate_permission/common.get_login_creds" ], "target" : { "namespace" : "android_app", "package_name" : "com.example.android.myapplication", "sha256_cert_fingerprints" : [ "AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00:AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00" ] } }, { "relation" : [ "delegate_permission/common.get_login_creds" ], "target" : { "namespace" : "android_app", "package_name" : "com.example.appname", "sha256_cert_fingerprints" : [ "00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF" ] } } ]
Host the Digital Asset Links JSON file in the corresponding well-known location on the primary domain, in this case:
https://example.com/.well-known/assetlinks.json
.Create another
assetlinks.json
file with the following content:[ { "relation": ["delegate_permission/common.get_login_creds"], "target": { "namespace": "web", "site": "example.com" } } ]
Host copies of this Digital Asset Links JSON file at the following location on the other domains, in this case:
example.org/.well-known/assetlinks.json
example.net/.well-known/assetlinks.json
mypersonaldomain.com/.well-known/assetlinks.json
Add the following line to both Android Apps manifests files under
<application>
:<meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
Configure digital asset linking in the manifest by declaring the association in the Android app. Add an object that specifies the
assetlinks.json
files to load. In this case:<string name="asset_statements" translatable="false"> [{ \"include\": \"https://example.com/.well-known/assetlinks.json\" }] </string>
After following these steps, you have successfully set up seamless credential sharing across multiple websites and Android apps.