고객을 위한 .NET 빠른 시작

이 빠른 시작 가이드의 단계를 따르면 약 10분 후에 제로터치 등록 고객 API에 요청하는 간단한 .NET C# 콘솔 앱이 준비됩니다.

기본 요건

이 빠른 시작을 실행하려면 다음이 필요합니다.

  • 제로터치 등록 고객 계정의 구성원인 Google 계정 고객 계정을 참조하세요.
  • Visual Studio 2013 이상
  • 인터넷 및 웹브라우저 액세스

1단계: 제로터치 등록 API 사용 설정하기

  1. 이 마법사를 사용하여 Google Developers Console에서 프로젝트를 만들거나 선택하고 자동으로 API를 사용 설정할 수 있습니다. 계속을 클릭한 다음 사용자 인증 정보로 이동을 클릭합니다.
  2. 사용자 인증 정보 만들기에서 취소를 클릭합니다.
  3. 페이지 상단에서 OAuth 동의 화면 탭을 선택합니다. 이메일 주소를 선택하고, 아직 설정되지 않은 경우 제품 이름을 입력하고, 저장 버튼을 클릭합니다.
  4. 사용자 인증 정보 탭을 선택하고 사용자 인증 정보 만들기 버튼을 클릭한 후 OAuth 클라이언트 ID를 선택합니다.
  5. 애플리케이션 유형으로 기타를 선택하고 '빠른 시작'이라는 이름을 입력한 후 만들기 버튼을 클릭합니다.
  6. 확인을 클릭하여 OAuth 클라이언트 패널을 닫습니다.
  7. 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. 1단계에서 다운로드한 client_secret.json를 Visual Studio 솔루션 탐색기로 드래그합니다.
  2. client_secret.json를 선택한 후 속성 창으로 이동하여 출력 디렉터리에 복사 필드를 항상 복사로 설정합니다.
  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 툴바에서 시작을 클릭합니다.

앱을 처음 실행하는 경우 액세스를 승인해야 합니다.

  1. 앱이 기본 브라우저에서 새 탭을 열려고 합니다. 이 작업이 실패하면 Console에서 URL을 복사하여 브라우저에서 엽니다. Google 계정에 로그인되어 있지 않으면 로그인하라는 메시지가 표시됩니다. 여러 Google 계정에 로그인되어 있는 경우 승인에 사용할 계정을 선택하라는 메시지가 페이지에 표시됩니다.
  2. 동의를 클릭합니다.
  3. 브라우저 탭을 닫으면 앱이 계속 실행됩니다.

메모

  • Google API 클라이언트 라이브러리는 파일 시스템에 승인 데이터를 저장하므로 후속 실행 시 승인을 요청하는 메시지가 표시되지 않습니다.
  • 앱의 승인 데이터를 재설정하려면 ~/.credentials/zero-touch.quickstart.json 파일을 삭제하고 앱을 다시 실행합니다.
  • 이 빠른 시작의 승인 흐름은 명령줄 앱에 적합합니다. 웹 앱에 승인을 추가하는 방법을 알아보려면 OAuth 2.0, 웹 애플리케이션 (ASP.NET MVC) 사용을 참조하세요.

문제 해결

다음과 같은 사항을 확인해 보시기 바랍니다. 빠른 시작에서 무엇이 잘못되었는지 알려주시면 문제 해결을 위해 노력하겠습니다.

  • 제로터치 등록 고객 계정의 구성원과 동일한 Google 계정으로 API 호출을 승인 중인지 확인하세요. 액세스 권한을 테스트하려면 동일한 Google 계정으로 제로터치 등록 포털에 로그인해 보세요.
  • 계정이 포털에서 최신 서비스 약관에 동의했는지 확인합니다. 고객 계정을 참조하세요.

자세히 알아보기