設定授權

您必須先設定 Google Play 發布帳戶、開發環境以及驗證實作方式所需的任何測試帳戶,才能在應用程式中新增授權驗證。

設定發布者帳戶

如果您還沒有 Google Play 發布者帳戶,必須使用您的 Google 帳戶註冊一個,並同意 Google Play 服務條款。

詳情請參閱開始使用發布功能相關說明。

如果您已經擁有 Google Play 發布者帳戶,請使用 Play 管理中心設定授權功能。

您可以透過 Google Play 管理中心執行以下操作:

  • 取得應用程式專用的授權公開金鑰
  • 在發布應用程式之前,偵錯並測試應用程式的授權實作方式
  • 發布已加上授權支援的應用程式

授權的管理設定

您可以在 Play 管理中心管理 Google Play 授權的多個管理控制項。您可以使用控制項執行下列操作:

  • 設定多個可透過電子郵件地址識別的「測試帳戶」。授權伺服器可讓使用者在裝置或模擬器上登入測試帳戶,傳送授權檢查並接收靜態的測試回應。您可以前往 Play 管理中心的「帳戶詳細資料」頁面設定帳戶。
  • 設定靜態測試回應,當伺服器接收到來自登入發布者帳戶或測試帳戶的使用者,對上傳至發布者帳戶的應用程式進行的授權檢查時,會傳送這些靜態測試回應。您可以在 Play 管理中心的「帳戶詳細資料」頁面中設定測試回應。
  • 取得應用程式用來授權的公開金鑰在應用程式中實作授權時,必須將公開金鑰字串複製到應用程式中。您可以在「服務和 API」頁面的「所有應用程式」下方取得應用程式的授權公開金鑰。

圖 1 從 Play 管理中心的「服務和 API」頁面可取得應用程式的授權金鑰。

若要進一步瞭解如何使用測試帳戶和靜態測試回應,請參閱下方的設定測試環境

設定開發環境

設定授權環境時,必須完成以下工作:

  1. 為開發工作設定執行階段環境
  2. 下載 LVL 至 SDK
  3. 設定授權驗證庫
  4. 在應用程式中納入 LVL 程式庫專案

下列章節將詳細說明這些工作。完成設定後,您可以開始新增授權至您的應用程式

首先,您必須設定適當的執行階段環境,以便執行、偵錯並測試應用程序在授權檢查和强制執行上的實作。

設定執行階段環境

如前所述,應用程式檢查授權狀態時,不會直接與授權伺服器通訊,而是會與 Google Play 應用程式提供的服務繫結並啟動一項授權檢查要求。接著 Google Play 服務會處理與授權伺服器之間的直接通訊,最後再將回應轉送至您的應用程式。若要偵錯並測試應用程式中的授權,您必須設定包含必要 Google Play 服務的執行階段環境,讓應用程式能夠將授權檢查要求傳送給授權伺服器。

您可以使用以下兩種執行階段環境:

  • 含有 Google Play 應用程式的 Android 裝置,或
  • 執行 Google API 外掛程式、API 級別為 8(第 2 版)或更高級別的 Android 模擬器

在裝置上執行

若要使用搭載 Android 的裝置偵錯和測試授權,裝置必須符合以下條件:

  • 執行與 Android 1.5 或更高版本(API 級別 3 或更高級別)的平台相容的版本,以及
  • 執行預先安裝 Google Play 用戶端應用程式的系統映像檔。

如果系統映像檔並未預先安裝 Google Play,應用程式就無法與 Google Play 授權伺服器通訊。

如需瞭解如何設定裝置以用於 Android 應用程式的開發,請參閱使用硬體裝置相關說明。

在 Android 模擬器上執行

如果您沒有可用的裝置,可以使用 Android 模擬器來偵錯及測試授權。

由於 Android SDK 中提供的 Android 平台「不」包含 Google Play,因此您必須從 SDK 存放區下載 API 級別 8 以上的 Google API 外掛程式平台。下載外掛程式之後,您必須建立使用該系統映像檔的 AVD 設定。

Google API 外掛程式不含完整的 Google Play 用戶端。不過,它提供以下服務:

  • Google Play 背景服務,用於實作 ILicensingService 遠端介面,讓應用程式可透過網路傳送授權檢查至授權伺服器。
  • 一組基礎帳戶服務,可讓您在 AVD 中新增 Google 帳戶,並使用發布者帳戶或測試帳戶憑證登入。

    使用發布者帳戶或測試帳戶登入時,您無須發布應用程式即可對其進行偵錯和測試。詳情請參閱下方的登入授權帳戶相關章節。

SDK Manager 提供多個版本的 Google API 外掛程式,但只有 Android 2.2 及更高版本含有必要的 Google Play 服務。

請按照下列步驟操作設定模擬器,將授權新增至應用程式:

  1. 啟動 Android Studio「Tools」(工具)選單下方的 Android SDK Manager(依序選取「Tools」(工具)>「Android」>「SDK Manager」),或執行 <sdk>/tools/android sdk
  2. 針對鎖定的 Android 版本選取並下載 Google API(必須為 Android 2.2 版或更高版本)。
  3. 下載完成後,開啟 Android Studio「Tools」(工具)選單下方的 AVD Manager(依序選取「Tools」(工具)>「Android」>「AVD Manager」),或執行 <sdk>/tools/android avd
  4. 在「Android Virtual Device Manager」(Android 虛擬裝置管理工具) 視窗中,選取「+ Create Virtual Device」(建立新的虛擬裝置),以指定新 AVD 的設定詳細資料。
  5. 在「Virtual Device Configuration」視窗中選取裝置硬體,然後選取「Next」
  6. 選取一個 Google API 做為要在新 AVD 上執行的系統映像檔,然後選取「Next」
  7. 為 AVD 指定一個具描述性的名稱,並視需要設定其他設定詳細資料。
  8. 選取「Finish」建立新的 AVD 設定,該設定會顯示在可用的 Android 虛擬裝置清單中。

如果您不熟悉 AVD 或其使用方式,請參閱管理虛擬裝置相關說明。

更新專案設定

在實際裝置或模擬器上設定符合上述要求的執行階段環境後,請務必視需要更新應用程式專案或建構指令碼,以便系統將您使用授權所編譯的 .apk 檔案部署至該環境中。特別是在 Android Studio 中開發時,請務必設定以適當裝置或 AVD 為目標的執行/偵錯設定。

只要將專案設定為針對標準 Android 1.5 版(API 級別 3)以上的程式庫進行編譯,就無須變更應用程式的建構設定。新增授權至應用程式不應對應用程式的建構設定產生任何影響。

下載 LVL

授權驗證庫 (LVL) 是協助類別的組合,可大幅簡化新增授權至應用程式的工作。在所有情況下,我們都建議您下載 LVL,做為應用程式中的授權實作基礎。

授權驗證庫 (LVL) 是在 GitHub 中開發。您可以複製 LVL 存放區,並將其設為程式庫專案。在指令列中輸入以下指令來複製存放區:

git clone https://github.com/google/play-licensing

存放區包含以下項目:

  • 儲存在 Android 程式庫專案中的 LVL 原始檔。
  • 一個使用 LVL 程式庫專案且名爲「sample」的範例應用程式。該範例說明了應用程式如何運用程式庫輔助類別來檢查並强制執行授權。

設定授權驗證庫

將 LVL 下載到電腦後,您必須在開發環境中將其設定為 Android 程式庫專案,或是將程式庫原始檔直接複製(或匯入)到現有的應用程式套件中。一般來說,建議您使用 LVL 做為程式庫專案,因為它可讓您在多個應用程式中重複使用授權程式碼,從長遠來看維護工作也更輕鬆。請注意,LVL 無法單獨編譯,也不是以靜態 .jar 檔案的形式新增至應用程式。

使用 LVL 時,建議的做法是將其設定為新的 Android程式庫專案。程式庫專案是一種開發專案,會保留共用的 Android 原始碼和資源。其他 Android 應用程式專案可以參照程式庫專案,建構時將其編譯來源包含在 .apk 檔案中。在授權方面,這表示您可以在程式庫專案中一次執行大部分的授權開發作業,接著在各個應用程式專案中納入程式庫來源。這麼一來,您就可以輕鬆地在所有專案中以一致的方式執行並集中管理授權。如果您不熟悉程式庫專案或使用方式,請參閱管理專案

LVL 是以設定好的程式庫專案形式提供,下載後即可開始使用。

如果您使用的是 Android Studio,則必須將 LVL 做爲新模組新增至專案。

  1. 依序選取「File」(檔案) >「New」(新增) >「Import Module」(匯入模組),透過「Import Module from Source」(從來源匯入模組) 視窗匯入程式庫模組。
  2. 在「Import Module from Source」(從來源匯入模組) 視窗的「Source directory」(來源目錄) 中,輸入 LVL 的 library 目錄 (該目錄包含程式庫的 AndroidManifest.xml 檔案) 做為專案根目錄 (<sdk>/extras/google/play_licensing/library/AndroidManifest.xml),然後選取「Next」(下一步)
  3. 選取「Finish」即可匯入程式庫模組。

如要進一步瞭解如何在 Android Studio 中使用程式庫模組,請參閱建立 Android 程式庫

在應用程式中包含 LVL 程式庫專案原始檔

若要使用 LVL 原始檔做為程式庫專案,您必須在應用程式專案屬性中新增 LVL 程式庫專案的參照。這會告知建構工具在編譯時將 LVL 程式庫專案原始檔納入應用程式。新增程式庫專案參照的程序取決於您的開發環境,內容敘述如下。

如果您使用 Android Studio 進行開發,則應該已將程式庫模組新增至專案,如上一節所述。如果尚未完成這項操作,請立即執行再繼續執行其他操作。

如果您使用 SDK 指令列工具執行開發作業,請前往包含應用程式專案的目錄,然後開啟 project.properties 檔案。在檔案中新增一行,指定 android.library.reference.<n> 金鑰及程式庫的路徑。例如:

android.library.reference.1=path/to/library_project

或者,您可以使用這個指令來更新專案屬性,包括程式庫專案的參照:

android update lib-project
--target <target_ID> \
--path path/to/my/app_project \
--library path/to/my/library_project

若要進一步瞭解如何使用程式庫專案,請參閱設定程式庫專案

設定測試環境

Google Play 管理中心提供的設定工具可讓您和其他使用者在發布前先測試應用程式的授權。實作授權時,您可以使用 Play 管理中心工具測試應用程式的政策,並處理不同的授權回應和錯誤狀況。

授權測試環境的主要元件包括:

  • 發布者帳戶中的「測試回應」設定,用於設定當伺服器處理來自登入發布者帳戶或測試帳戶的使用者,對上傳至發布者帳戶的應用程式進行的授權檢查時,會傳回的靜態授權回應。
  • 一組選擇性的測試帳戶,該帳戶在檢查您上傳的應用程式的授權時會收到靜態測試回應(無論該應用程式是否已發布)。
  • 應用程式的執行階段環境,其中包含該 Google Play 應用程式或 Google API 外掛程式,使用者會在此登入發布者帳戶或其中一個測試帳戶。

如要正確設定測試環境,須執行下列操作:

  1. 設定由授權伺服器傳回的靜態測試回應
  2. 視需要設定測試帳戶
  3. 先正確登入模擬器或裝置,再啟動授權檢查測試。

以下各節會提供詳細資訊。

設定授權檢查的測試回應

Google Play 在發布者帳戶中提供一項設定,您可以用來覆寫授權檢查的一般處理作業,並傳回指定的靜態回應代碼。這項設定僅用於測試,並且「只」適用於已上傳的應用程式,由使用發布者帳戶或已註冊的測試帳戶憑證登入模擬器或裝置的任何使用者所執行的授權檢查。對於其他使用者,伺服器一律按照一般規則處理授權檢查。

若要為帳戶設定測試回應,請登入您的發布者帳戶,然後按一下「編輯個人檔案」。在「編輯個人檔案」頁面中,找到「授權」面板中的「測試回應」選單,如下所示。您可以從一組完整的有效伺服器回應代碼進行選取,藉此控制您要在應用程式中測試的回應或條件。

一般來說,您必須使用「測試回應」選單中提供的所有回應代碼,測試應用程式的授權實作作業。如需代碼相關說明,請參閱授權參考資料中的伺服器回應代碼部分。

圖 2. 在「帳戶詳細資料」頁面的「授權測試」面板中,您可以設定測試帳戶並管理測試回應。

請注意,您設定的測試回應會套用至整個帳戶,也就是說,測試回應不會只套用至單一應用程式,而是套用至與該發布者帳戶相關的「所有」應用程式。如果您同時測試多個應用程式,則只要使用者是使用該發布者帳戶或測試帳戶登入模擬器或裝置,變更測試回應就會影響所有這些應用程式下次的授權檢查。

您必須先登入已安裝應用程式並且可用於查詢伺服器的裝置或模擬器,才能成功接收授權檢查的測試回應。亦即您必須使用發布者帳戶或您所設定的其中一個測試帳戶登入。如要進一步瞭解測試帳戶,請參閱下一節的說明。

請參閱伺服器回應代碼查看可用的測試回應及其含義列表。

設定測試帳戶

在某些情況下,您可能想要讓多個開發人員團隊對最終會透過您的發布者帳戶發布的應用程式進行授權測試,但不想讓他們取得發布者帳戶的登入憑證。為了滿足這項需求,Google Play 管理中心可讓您設定一或多個選用的「測試帳戶」,授權這些帳戶查詢授權伺服器,並從您的發布者帳戶接收靜態測試回應。

測試帳戶是指您在發布者帳戶中註冊的標準 Google 帳戶,讓這些帳戶接收已上傳應用程式的測試回應。於是開發人員可以使用測試帳戶憑證登入裝置或模擬器,並從已安裝的應用程式啟動授權檢查。授權伺服器收到測試帳戶使用者的授權檢查時,會傳回針對發布者帳戶所設定的靜態測試回應。

因此,透過測試帳戶登入的使用者的存取權和權限必定會有所限制,包括:

  • 測試帳戶使用者只能向授權伺服器查詢已上傳至發布者帳戶的應用程式。
  • 測試帳戶使用者沒有權限將應用程式上傳到您的發布者帳戶。
  • 測試帳戶使用者沒有權限設定發布者帳戶的靜態測試回應。

下表匯總了發布者帳戶、測試帳戶及任何其他帳戶在功能方面的差異。

表 1. 用於測試授權的帳戶類型差異。

帳戶類型 是否可以在上傳之前檢查授權? 是否可以接收測試回應? 是否可以設定測試回應?
發布者帳戶
測試帳戶
其他

在發布者帳戶中註冊測試帳戶

首先您必須在發布者帳戶中註冊各個測試帳戶。如圖 2 所示,您是由發布者帳戶的「編輯個人檔案」頁面的「授權」面板中註冊測試帳戶。只要使用以逗號分隔的清單輸入多個帳戶,然後按一下「儲存」,即可儲存個人檔案變更。

任何 Google 帳戶都可做為測試帳戶。如果您想擁有並控制測試帳戶,可以自行建立帳戶,並將帳號登入資料發給開發人員或測試人員。

為測試帳戶使用者處理應用程式的上傳與發布

如前所述,測試帳戶的使用者只可接收已上傳至發布者帳戶的應用程式的靜態測試回應。由於這些使用者沒有上傳應用程式的權限,您必須以發布者的身分與這些使用者合作,收集要上傳的應用程式並發布已上傳的應用程式進行測試。您可以透過任何便捷的方式進行收集與發布作業。

應用程式完成上傳且為授權伺服器識別後,開發人員和測試人員仍可繼續在自己的本機開發環境中修改應用程式,無須上傳新版本。只有在本機應用程式增加資訊清單檔案中的 versionCode 屬性時,才必須上傳新版本。

將公開金鑰發布給測試帳戶使用者

授權伺服器會照常處理靜態測試回應,包括簽署授權回應資料、新增額外參數等。如要支援透過測試帳戶 (而非發布者帳戶) 實作授權的開發人員,您必須將應用程式的授權公開金鑰提供給他們。開發人員如果無法存取 Play 管理中心,就無法存取應用程式的公開金鑰,而沒有金鑰,他們就無法驗證授權回應。

請注意,如果您基於某些原因決定為應用程式產生新的授權金鑰組,就必須通知所有測試帳戶的使用者。對於測試人員,您可以將新金鑰嵌入應用程式套件中再發布給使用者。對於開發人員,您必須將新金鑰直接發布給他們。

在執行階段環境中登入授權帳戶

授權服務用於判斷特定使用者是否已授權使用特定的應用程式。在授權檢查期間,Google Play 應用程式會從系統的主要帳戶收集使用者 ID 並傳送至伺服器,同時還會傳送應用程式套件名稱和其他資訊。然而,如果沒有使用者資訊,授權檢查作業就會失敗,於是 Google Play 應用程式終止要求並向該應用程式傳回錯誤。

在測試期間,為了確保應用程式能夠成功查詢授權伺服器,您必須透過下列憑證「在裝置或模擬器上」登入帳戶:

  • 發布者帳戶的憑證,或
  • 透過發布者帳戶註冊的測試帳戶的憑證

使用發布者帳戶登入的好處是,應用程式在尚未上傳至 Play 管理中心之前,就能接收靜態測試回應。

如果您隸屬於某個大型機構組織,或是與外部團隊合作開發應用程式,且將透過您的網站發布該應用程式,建議您改為發布測試帳戶,然後在測試期間使用這些帳戶登入。

請依照下列步驟登入裝置或模擬器。建議的做法是登入為主要帳戶,但如果裝置或模擬器中已有正在使用的其他帳戶,您可以另建一個帳戶,然後使用發布者帳戶或測試帳戶憑證登入。

  1. 依序開啟「設定」>「帳戶與同步處理」
  2. 選取「新增帳戶」,然後選擇要新增 Google 帳戶。
  3. 選取「下一步」然後「登入」。
  4. 輸入發布者帳戶或已在該發布者帳戶中註冊的測試帳戶的使用者名稱和密碼。
  5. 選取「登入」。系統會將您登入新帳戶。

登入後,您可以開始在應用程式中測試授權(如果已完成上述 LVL 整合步驟)。應用程式啟動授權檢查時,會收到回應,其中包含在發布者帳戶中設定的靜態測試回應。

請注意,如果您使用的是模擬器,則每次您抹除資料後,都必須在重新啟動模擬器時登入發布者帳戶或測試帳戶。

完成設定程序後,請繼續前往新增授權至您的應用程式