開始使用

總覽

使用 Digital Asset Links 通訊協定和 API,可讓應用程式或網站公開對於其他應用程式或網站公開的可驗證聲明。舉例來說,網站可以宣告其與特定 Android 應用程式相關聯,或是宣告與其他網站共用使用者憑證。

下列為 Digital Asset Links 的可能用途:

  • 網站 A 聲明,只要連結應用程式,連結網站應在行動裝置上使用指定應用程式開啟。
  • 網站 A 聲明可以與網站 B 共用 Chrome 使用者憑證,這樣一來,如果使用者登入網站 A 就無需登入網站 B。
  • 應用程式 A 聲明,應用程式可以與網站 B 分享裝置設定 (例如位置資訊)。

重要詞彙

  • 主體:主體是指聲明的應用程式或網站。在 Digital Asset Links 中,主體一律為代管聲明清單的應用程式或網站。
  • 陳述式清單:陳述式包含在包含一或多個陳述式的陳述式清單中。陳述清單是明文且可以公開存取,並位於主體控制且不易假冒或竄改。可以是獨立檔案,或是其他大型項目的一個部分。例如,網站中的檔案是整個檔案;在 Android 應用程式中,則是指應用程式資訊清單中的一部分。 任何人都可以使用非專屬的方法查看和驗證對帳單。詳情請參閱對帳單清單說明文件
  • 陳述式:陳述式是一種結構緊固的 JSON 結構,由「關係」(陳述式代表要執行的動作,例如:啟用共用憑證) 和「目標」(目標適用的網站或應用程式)。因此,每個陳述式都如同一句句子,其中 principal 會顯示 relationtarget
  • 陳述式消費者:陳述式消費者會向主體要求陳述式,並檢查指定主體是否存在指定陳述式,是否能夠執行指定動作。詳情請參閱說明文件

快速使用範例

以下簡單說明一個範例,「網站」www.example.com 如何使用 Digital Asset Links 來指定要在網站 (例如瀏覽器) 開啟指定應用程式的任何連結:

  1. www.example.com 網站發布了一份對帳單清單,網址是:https://www.example.com/.well-known/assetlinks.json。這是網站上對帳單清單的正式名稱和地區;任何其他地點 (例如任何其他位置) 的陳述式清單,皆不適用於這個網站。在我們的範例中,陳述式清單包含一個陳述式,允許其 Android 應用程式在其網站上開啟連結。
    [{
      "relation": ["delegate_permission/common.handle_all_urls"],
      "target" : { "namespace": "android_app", "package_name": "com.example.app",
                   "sha256_cert_fingerprints": ["hash_of_app_certificate"] }
    }]
    陳述式清單支援 [ ] 標記內的陳述式陣列,但範例檔案只包含一個陳述式。sha256_cert_fingerprints 是應用程式簽署憑證的 SHA256 指紋。如需詳細資訊,請參閱 Android 應用程式連結說明文件
  2. 上述陳述式中列出的 Android 應用程式具有意圖篩選器,可指定要處理的網址架構、主機和路徑模式:在本案例中為 https://www.example.com。意圖篩選器包含 Android M 新手專用的特殊屬性 android:autoVerify,表示 Android M 是在安裝應用程式時,在意圖篩選器中描述的網站。
  3. 使用者安裝應用程式。Android 會查看含有 autoVerify 屬性的意圖篩選器,並檢查指定網站中是否有陳述式清單存在;如果有,Android 會檢查該檔案是否包含陳述式將對應用程式進行連結處理,並透過憑證雜湊驗證應用程式。如果一切順利,Android 就會將任何 https://www.example.com 意圖轉送至 example.com 應用程式。
  4. 使用者在裝置上點選 https://www.example.com/puppies 的連結。這個連結可以是任何位置:瀏覽器、Google Search Appliance 建議或任何位置。Android 會將意圖轉送至 example.com 應用程式。
  5. example.com 應用程式會收到意圖並選擇處理此事件,以在應用程式中開啟小狗網頁。如果因故拒絕應用程式處理連結,或者應用程式未在裝置上執行,系統會將該連結傳送至下一個與意圖意圖相符的預設意圖處理常式 (通常是瀏覽器)。

重要事項和限制:

  • 通訊協定不會驗證陳述式的主體,但陳述式位於與主體高度相關、且受主體控管的特定位置。
  • 通訊協定不會驗證陳述式目標,但可為呼叫端提供驗證目標的方法 (例如,陳述式會使用憑證雜湊和套件名稱識別行動應用程式目標)。
  • 該通訊協定並未以原生方式執行任何陳述式動作,而是顯示公開陳述式,讓消耗的應用程式必須驗證並決定應採取的處置方式和處理方式。Android M 會原生執行這些步驟,例如,如果網站將連結處理委派給特定應用程式,Android 會檢查並驗證陳述式,驗證目標應用程式,然後提供應用程式處理指定連結的選項。
  • 通訊協定不允許針對兩個第三方進行聲明:也就是說,網站 A 可以針對網站 B 建立聲明,但網站 A 對網站 B 與網站 C 的關係有所發表。不過,如果網站 B 信任網站 A,就可以確認網站 A 是否有為網站 C 授予權限的陳述式,並決定導入。

後續步驟

  1. 查看用途是否提供明確說明文件。
  2. 瞭解如何建立陳述式