客戶專用的 .NET 快速入門導覽課程

請按照這份快速入門指南中的步驟進行,大約 10 分鐘後開始 這個簡單的 .NET C# 主控台應用程式會向零接觸註冊機制提出要求 並與客戶 API 搭配使用

必要條件

如要執行本快速入門導覽課程,您需要:

  • 擁有零接觸註冊機制客戶的 Google 帳戶 讓他們使用服務帳戶請參閱客戶 帳戶。
  • Visual Studio 2013 以上版本。
  • 連上網際網路和網路瀏覽器。

步驟 1:啟用零接觸註冊機制 API

  1. 請使用此 精靈在 Google Developers Console 中建立或選取專案,並且 系統會自動啟用 API依序點選「繼續」和「前往憑證」 。
  2. 按一下「建立憑證」上的「取消」。
  3. 選取頁面頂端的「OAuth 同意畫面」分頁標籤。選取 Email address (電子郵件地址),輸入產品名稱 (如果尚未設定) 按一下「儲存」按鈕。
  4. 選取「Credentials」分頁標籤,然後按一下「Create credentials」 按鈕,然後選取「OAuth 用戶端 ID」。
  5. 選取應用程式類型 Other,然後輸入名稱 「快速入門導覽課程」,然後按一下「建立」 按鈕。
  6. 按一下「OK」,關閉「OAuth 用戶端」面板。
  7. 按一下「Download JSON」(下載 JSON) 。
  8. 將檔案移至工作目錄,並重新命名為 client_secret.json。

步驟 2:準備專案

  1. 在 Visual Studio 中建立新的 .NET Core C# 主控台應用程式專案。
  2. 開啟套件管理員,選取套件來源 nuget.org,然後 下列套件:
    • Google.Apis.AndroidProvisioningPartner.v1
    • Google.Apis.Auth

詳情請參閱 Microsoft 文件。安裝及使用 套件。

步驟 3:設定範例

  1. 將 client_secret.json (在步驟 1 下載) 拖曳至 Visual Studio Solution Explorer
  2. 選取 client_secret.json,然後前往「Properties」(屬性) 視窗 將「Copy to output directory」(複製到輸出目錄) 欄位設為「Always copy」。
  3. 將 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」。

首次執行應用程式時,您必須授予存取權:

  1. 應用程式會嘗試在預設瀏覽器中開啟新分頁。如果失敗,請從 在瀏覽器中開啟應用程式。如果您尚未登入 Google 帳戶, 。如果您登入多個 Google 帳戶,頁面會提示您選取 授權帳戶。
  2. 然後點選 [Accept]。
  3. 關閉瀏覽器分頁,應用程式會繼續執行。

附註

  • 由於 Google API 用戶端程式庫會在檔案系統中儲存授權資料,因此 就不會提示您授權
  • 如要重設應用程式的授權資料,請刪除應用程式的 ~/.credentials/zero-touch.quickstart.json 檔案,然後再次執行應用程式。
  • 本快速入門導覽課程的授權流程非常適合用於指令列應用程式。瞭解如何 授權網頁應用程式,請參閱 使用 OAuth 2.0 網頁應用程式 (ASP.NET MVC)。

疑難排解

以下是部分需要檢查的常見事項。 只要在快速入門導覽課程中告訴我們問題所在,我們就會加以修正。

  • 請確認您用來授權 API 呼叫的 Google 帳戶隸屬於 零接觸註冊機制客戶帳戶。嘗試登入零接觸註冊機制入口網站, 以便測試存取情形
  • 確認以下位置的帳戶已接受最新的《服務條款》: 入口網站。詳情請參閱 客戶帳戶:

瞭解詳情