請按照這份快速入門指南中的步驟進行,大約 10 分鐘後開始 這個簡單的 .NET C# 主控台應用程式會向零接觸註冊機制提出要求 並與客戶 API 搭配使用
必要條件
如要執行本快速入門導覽課程,您需要:
- 擁有零接觸註冊機制客戶的 Google 帳戶 讓他們使用服務帳戶請參閱客戶 帳戶。
- Visual Studio 2013 以上版本。
- 連上網際網路和網路瀏覽器。
步驟 1:啟用零接觸註冊機制 API
- 請使用此 精靈在 Google Developers Console 中建立或選取專案,並且 系統會自動啟用 API依序點選「繼續」和「前往憑證」 。
- 按一下「建立憑證」上的「取消」。
- 選取頁面頂端的「OAuth 同意畫面」分頁標籤。選取 Email address (電子郵件地址),輸入產品名稱 (如果尚未設定) 按一下「儲存」按鈕。
- 選取「Credentials」分頁標籤,然後按一下「Create credentials」 按鈕,然後選取「OAuth 用戶端 ID」。
- 選取應用程式類型 Other,然後輸入名稱 「快速入門導覽課程」,然後按一下「建立」 按鈕。
- 按一下「OK」,關閉「OAuth 用戶端」面板。
- 按一下「Download JSON」(下載 JSON) 。
- 將檔案移至工作目錄,並重新命名為
client_secret.json
。
步驟 2:準備專案
- 在 Visual Studio 中建立新的 .NET Core C# 主控台應用程式專案。
- 開啟套件管理員,選取套件來源 nuget.org,然後
下列套件:
Google.Apis.AndroidProvisioningPartner.v1
Google.Apis.Auth
詳情請參閱 Microsoft 文件。安裝及使用 套件。
步驟 3:設定範例
- 將
client_secret.json
(在步驟 1 下載) 拖曳至 Visual Studio Solution Explorer - 選取
client_secret.json
,然後前往「Properties」(屬性) 視窗 將「Copy to output directory」欄位設為「Always copy」。 - 將
Program.cs
的內容替換為以下程式碼:
using Google.Apis.AndroidProvisioningPartner.v1; using Google.Apis.AndroidProvisioningPartner.v1.Data; using Google.Apis.Auth.OAuth2; using Google.Apis.Services; using Google.Apis.Util.Store; using System; using System.Collections.Generic; using System.IO; using System.Threading; namespace ZeroTouchCustomerQuickstart { class Program { // A single scope is used for the zero-touch enrollment customer API. static readonly string[] Scopes = { "https://www.googleapis.com/auth/androidworkzerotouchemm" }; static string ApplicationName = "Zero-touch Enrollment .NET Quickstart"; static void Main(string[] args) { UserCredential credential; // Ask the user to authorize the request using their Google Account // in their browser. using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) { string credPath = System.Environment.GetFolderPath( System.Environment.SpecialFolder.Personal); credPath = Path.Combine(credPath, ".credentials/zero-touch.quickstart.json"); credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.FromStream(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); } // Create a zero-touch enrollment API service endpoint. var service = new AndroidProvisioningPartnerService(new BaseClientService.Initializer { HttpClientInitializer = credential, ApplicationName = ApplicationName }); // Get the customer's account. Because a customer might have more // than one, limit the results to the first account found. CustomersResource.ListRequest accountRequest = service.Customers.List(); accountRequest.PageSize = 1; CustomerListCustomersResponse accountResponse = accountRequest.Execute(); if (accountResponse.Customers.Count == 0) { // No accounts found for the user. Confirm the Google Account // that authorizes the request can access the zero-touch portal. Console.WriteLine("No zero-touch enrollment account found."); Environment.Exit(-1); } Company customer = accountResponse.Customers[0]; var customerAccount = String.Format("customers/{0}", customer.CompanyId); // Send an API request to list all the DPCs available. CustomersResource.DpcsResource.ListRequest request = service.Customers.Dpcs. List(customerAccount); CustomerListDpcsResponse response = request.Execute(); // Print out the details of each DPC. IList<Dpc> dpcs = response.Dpcs; foreach (Dpc dpcApp in dpcs) { Console.WriteLine("Name:{0} APK:{1}", dpcApp.DpcName, dpcApp.PackageName); } } } }
步驟 4:執行範例
如要建構及執行範例,請按一下 Visual Studio 工具列中的
「Start」。首次執行應用程式時,您必須授予存取權:
- 應用程式會嘗試在預設瀏覽器中開啟新分頁。如果失敗,請從 在瀏覽器中開啟應用程式。如果您尚未登入 Google 帳戶, 。如果您登入多個 Google 帳戶,頁面會提示您選取 授權帳戶。
- 然後點選 [Accept]。
- 關閉瀏覽器分頁,應用程式會繼續執行。
附註
- 由於 Google API 用戶端程式庫會在檔案系統中儲存授權資料,因此 就不會提示您授權
- 如要重設應用程式的授權資料,請刪除應用程式的
~/.credentials/zero-touch.quickstart.json
檔案,然後再次執行應用程式。 - 本快速入門導覽課程的授權流程非常適合用於指令列應用程式。瞭解如何 授權網頁應用程式,請參閱 使用 OAuth 2.0 網頁應用程式 (ASP.NET MVC)。
疑難排解
以下是部分需要檢查的常見事項。 只要在快速入門導覽課程中告訴我們問題所在,我們就會加以修正。
- 請確認您用來授權 API 呼叫的 Google 帳戶隸屬於 零接觸註冊機制客戶帳戶。嘗試登入零接觸註冊機制入口網站, 以便測試存取情形
- 確認以下位置的帳戶已接受最新的《服務條款》: 入口網站。詳情請參閱 客戶帳戶: