Segui i passaggi descritti in questa guida rapida e in circa 10 minuti avrai a disposizione una semplice app per console .NET C# che invia richieste all'API zero-touch Subscription del cliente.
Prerequisiti
Per eseguire questa guida rapida, devi avere:
- Un Account Google, membro del tuo account cliente con registrazione zero-touch. Consulta Account cliente.
- Visual Studio 2013 o versioni successive.
- Accesso a Internet e a un browser web.
Passaggio 1: attiva l'API di registrazione zero-touch
- Utilizza questa procedura guidata per creare o selezionare un progetto in Google Developers Console e attivare automaticamente l'API. Fai clic su Continua e poi su Vai alle credenziali.
- Fai clic su Annulla in Crea credenziali.
- Nella parte superiore della pagina, seleziona la scheda Schermata consenso OAuth. Seleziona un Indirizzo email, inserisci un Nome prodotto se non è già impostato e fai clic sul pulsante Salva.
- Seleziona la scheda Credenziali, fai clic sul pulsante Crea credenziali e seleziona ID client OAuth.
- Seleziona il tipo di applicazione Altro, inserisci il nome "Guida rapida" e fai clic sul pulsante Crea.
- Fai clic su OK per ignorare il riquadro Client OAuth.
- Fai clic su Scarica JSON.
- Sposta il file nella tua directory di lavoro e rinominalo
client_secret.json
.
Passaggio 2: prepara il progetto
- Crea un nuovo progetto Console Console .NET Core C# in Visual Studio.
- Apri il gestore di pacchetti, seleziona l'origine del pacchetto nuget.org e aggiungi
i seguenti pacchetti:
Google.Apis.AndroidProvisioningPartner.v1
Google.Apis.Auth
Per scoprire di più, leggi il documento di Microsoft Installare e utilizzare un pacchetto.
Passaggio 3: configura l'esempio
- Trascina
client_secret.json
(scaricato nel passaggio 1) in Esplora soluzioni di Studio. - Seleziona
client_secret.json
, quindi vai alla finestra Proprietà e imposta il campo Copia nella directory di output su Copia sempre. - Sostituisci i contenuti di
Program.cs
con il seguente codice:
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); } } } }
Passaggio 4: esegui l'esempio
Per creare ed eseguire l'esempio, fai clic su
Avvia nella barra degli strumenti di Visual Studio.Alla prima esecuzione dell'app, devi autorizzare l'accesso:
- L'app tenta di aprire una nuova scheda nel browser predefinito. Se non funziona, copia l'URL dalla console e aprilo nel browser. Se non lo hai ancora fatto, ti viene chiesto di accedere. Se hai eseguito l'accesso a più Account Google, nella pagina viene richiesto di selezionare un account per l'autorizzazione.
- Fai clic su Accept (accetta).
- Chiudi la scheda del browser: l'app continua a funzionare.
Note
- Poiché la libreria client delle API di Google archivia i dati di autorizzazione nel file system, i lanci successivi non richiedono l'autorizzazione.
- Per reimpostare i dati di autorizzazione dell'app, elimina il file
~/.credentials/zero-touch.quickstart.json
ed esegui di nuovo l'app. - Il flusso di autorizzazione in questa guida rapida è ideale per un'app a riga di comando. Per scoprire come aggiungere l'autorizzazione a un'app web, consulta Utilizzare OAuth 2.0, applicazioni web (ASP.NET MVC).
Risoluzione dei problemi
Ecco alcuni aspetti comuni che puoi controllare. Segnalaci cosa non ha funzionato con la guida rapida e cercheremo di risolverlo.
- Verifica di autorizzare le chiamate API con lo stesso Account Google che fa parte del tuo account cliente con registrazione zero-touch. Prova ad accedere al portale della registrazione zero-touch utilizzando lo stesso Account Google per testare il tuo accesso.
- Verifica che l'account abbia accettato i più recenti Termini di servizio nel portale. Vedi Account cliente.