Dopo aver creato i progetti Google Cloud e Accesso ai dispositivi, puoi autorizzare un Account Google con un dispositivo Google Nest supportato per l'API SDM.
Collega il tuo account
Per visualizzare strutture e dispositivi, devi collegare un Account Google al tuo Device Access progetto utilizzando il PCM. PCM consente al user di concedere l'autorizzazione ai developerdi accedere ai dati delle strutture e dei dispositivi.
In questa guida, rappresenti sia il user che il developer.
Apri il seguente link in un browser web, sostituendo:
- project-id con il tuo Device Access Project ID
- oauth2-client-id con l'ID client OAuth2 delle tue credenziali Google Cloud
https://nestservices.google.com/partnerconnections/project-id/auth?
redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service - Se di recente hai eseguito l'accesso a Google con più account, potresti visualizzare una schermata iniziale Scegli un account con un elenco dei tuoi Account Google. In questo caso, seleziona l'Account Google associato ai dispositivi per i quali vuoi autorizzare l'accesso Device Access.
- La schermata Autorizzazioni Google Nest è il PCM stesso. Qui puoi concedere autorizzazioni per la struttura e i dispositivi. Attiva le autorizzazioni per la tua casa (passaggio 1) e per tutti i dispositivi al suo interno supportati dall'API SDM (passaggio 2), quindi fai clic su Avanti.
- Nella schermata Scegli un account per continuare a Nome progetto, dove Nome progetto è il nome del tuo progetto Google Cloud, seleziona l'Account Google che vuoi autorizzare per l'API SDM. Utilizza lo stesso Account Google di prima.
- Dopo aver scelto un account, potresti visualizzare una schermata di avviso che indica che Google non ha verificato questa app. In questo caso, per continuare, fai clic sull'opzione Avanzate e poi su Vai a Nome progetto (non sicuro). Per ulteriori informazioni, consulta Google non ha verificato questa app.
- Nella schermata Concede l'autorizzazione Nome progetto, fai clic su Consenti per concedere al progetto l'autorizzazione ad accedere al tuo Account Google.
- Nella schermata Conferma le tue scelte, assicurati che le autorizzazioni che vuoi concedere siano selezionate e fai clic su Consenti per confermare.
Dovresti essere reindirizzato all'URL https://www.google.com. Il codice di autorizzazione viene restituito come parametro
code
nell'URL, che deve avere questo formato:https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - Copia il codice di autorizzazione.
Ottenere un token di accesso
Utilizza il codice di autorizzazione per recuperare un token di accesso, che puoi utilizzare per chiamare l'API SDM.
Apri un terminale ed esegui il seguente comando
curl
, sostituendo:- oauth2-client-id e oauth2-client-secret con l'ID client e il client secret OAuth2 delle tue credenziali Google Cloud
- authorization-code con il codice che hai ricevuto nel passaggio precedente
curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?
client_id=oauth2-client-id& client_secret=oauth2-client-secret& code=authorization-code& grant_type=authorization_code& redirect_uri=https://www.google.com' Google OAuth restituisce due token, un token di accesso e un token di aggiornamento.
Copia entrambi i valori. Il token di accesso viene utilizzato per chiamare l'API SDM e il token di aggiornamento viene utilizzato per ottenere un nuovo token di accesso.{
Effettuare una chiamata all'elenco di dispositivi
L'autorizzazione non è completata finché non effettui la prima chiamata con il nuovo token di accesso.devices.list
Questa chiamata iniziale completa la procedura di autorizzazione e attiva gli eventi se hai già configurato un abbonamento Pub/Sub.
Utilizza curl
per effettuare questa chiamata per l'endpoint devices
:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
Una chiamata riuscita restituisce un elenco di dispositivi collegati al tuo Device Access progetto. Ogni dispositivo ha il proprio elenco univoco di caratteristiche disponibili:
{ "devices": [ { "name": "enterprises/project-id/devices/device-id", "type": "sdm.devices.types.device-type", "traits": { ... }, "parentRelations": [ { "parent": "enterprises/project-id/structures/structure-id/rooms/room-id", "displayName": "device-room-name" } ] } ] }
Come utilizzare un token di aggiornamento
I token di accesso per l'API SDM sono validi solo per un'ora, come indicato nel parametro expires_in
restituito da Google OAuth. Se il token di accesso scade, utilizza il token di aggiornamento per ottenerne uno nuovo.
Il comando è simile a quello del token di accesso, tranne per il fatto che utilizzi un grant_type
diverso.
Apri un terminale ed esegui il seguente comando
curl
, sostituendo:- oauth2-client-id e oauth2-client-secret con l'ID client e il client secret OAuth2 delle tue credenziali Google Cloud
- refresh-token con il codice che hai ricevuto inizialmente quando hai ottenuto il token di accesso.
curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?
client_id=oauth2-client-id& client_secret=oauth2-client-secret& refresh_token=refresh-token& grant_type=refresh_token' Google OAuth restituisce un nuovo token di accesso.
{
Risoluzione dei problemi
Per scoprire di più su OAuth di Google, consulta l'articolo Utilizzare OAuth 2.0 per accedere alle API di Google.
Il token di aggiornamento continua a scadere
I token di aggiornamento possono smettere di funzionare dopo 7 giorni se l'ID client non è approvato. La scadenza del token di 7 giorni non è correlata alle approvazioni commerciali o della sandbox. Per ottenere una durata maggiore dei token, un account di servizio o utente deve avere l'ID client OAuth 2.0 approvato e messo in produzione. Per maggiori informazioni, consulta la sezione Aggiornare la scadenza del token.
Accesso negato
Se hai configurato la schermata per il consenso OAuth in Google Cloud e il tipo di utente è Esterno, verrà visualizzato un errore "Accesso negato" se provi a collegare un Account Google non elencato come utente di prova per la tua app. Assicurati di aggiungere l'Account Google alla sezione Utenti di test nella schermata per il consenso OAuth.
Errore di Partner Connections Manager (PCM)
Per assistenza in caso di errori riscontrati durante l'accesso a PCM, consulta il riferimento agli errori di Partner Connections Manager (PCM).
Google non ha verificato questa app
L'API SDM utilizza un ambito limitato, il che significa che tutte le app che utilizzano questo ambito durante l'autorizzazione saranno "non verificate", a meno che non sia stata completata la verifica dell'API OAuth. Se utilizzi Device Access per uso personale, la verifica dell'API OAuth non è richiesta.
Durante la procedura di autorizzazione, potresti visualizzare la schermata "Google non ha verificato questa app", che viene visualizzata se l'ambito sdm.service
non è configurato nella schermata per il consenso OAuth in Google Cloud. Questa schermata può essereaggirata facendo clic sull'opzione Avanzate e poi su Vai a Nome progetto (non sicuro).
Per ulteriori informazioni, consulta la schermata App non verificata.
Cliente non valido
Quando provi a ottenere un token di accesso o di aggiornamento, viene visualizzato un errore "Client invalido" se fornisci un segreto client OAuth 2.0 errato. Assicurati che il valore client_secret
utilizzato nelle chiamate dei token di accesso e di aggiornamento sia quello dell'ID client OAuth 2.0 in uso, come indicato nella pagina Credenziali Google Cloud.
Richiesta non valida, ambito obbligatorio mancante
Dopo aver concesso le autorizzazioni in PCM, potresti riscontrare un errore "Richiesta non valida" o "Manca il parametro obbligatorio: ambito". Assicurati che il valore scope
utilizzato nelle chiamate di autorizzazione sia lo stesso impostato per il client OAuth 2.0, come indicato nella pagina Credenziali Google Cloud.
Mancata corrispondenza dell'URI di reindirizzamento
Durante l'autorizzazione, potresti riscontrare un errore "Mancata corrispondenza dell'URI di reindirizzamento". Assicurati che il valore redirect_uri
utilizzato nelle chiamate di autorizzazione sia uguale a quello impostato per il client OAuth 2.0, come indicato nella pagina Credenziali Google Cloud.
Modificare le autorizzazioni dell'account
Per modificare le autorizzazioni concesse a un Device Access progetto o scollegarlo completamente, vai a PCM:
https://nestservices.google.com/partnerconnections
Questa pagina mostra tutti i servizi per sviluppatori di terze parti (Device Access progetti) collegati al tuo account. Seleziona il Device Access progetto da modificare. Utilizza la schermata successiva per modificare le autorizzazioni come preferisci.
Per revocare solo autorizzazioni specifiche per un servizio autorizzato, attiva/disattiva le autorizzazioni che vuoi revocare e fai clic sulla freccia Indietro per salvare.
Per scollegare completamente un servizio autorizzato, fai clic su Scollega il tuo Account Google per revocare tutte le autorizzazioni e i token di accesso concessi al progetto per l'account.
Se PCM non mostra il servizio desiderato, potrebbe essere necessario effettuare una chiamata per l'elenco dei dispositivi.
Riferimento rapido
Utilizza questa risorsa di riferimento per implementare rapidamente i passaggi per autorizzare un user e collegare il suo Account Google.
Per utilizzare questo riferimento rapido, modifica ogni variabile segnaposto negli esempi di codice con i valori per la tua integrazione specifica, quindi copia e incolla come necessario:
1 PCM
Apri il seguente link in un browser web, sostituendo:
- project-id con il tuo Device Access Project ID
- oauth2-client-id con l'ID client OAuth2 delle tue credenziali Google Cloud
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com& access_type=offline& prompt=consent& client_id=oauth2-client-id& response_type=code& scope=https://www.googleapis.com/auth/sdm.service
2 Codice di autorizzazione
Dovresti essere reindirizzato all'URL https://www.google.com. Il codice di autorizzazione viene restituito come parametro code
nell'URL, che deve avere questo formato:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 Token di accesso
Utilizza il codice di autorizzazione per recuperare un token di accesso, che puoi utilizzare per chiamare l'API SDM.
Apri un terminale ed esegui il seguente comando curl
, sostituendo:
- oauth2-client-id e oauth2-client-secret con l'ID client e il client secret OAuth2 delle tue credenziali Google Cloud
- authorization-code con il codice che hai ricevuto nel passaggio precedente
Google OAuth restituisce due token, un token di accesso e un token di aggiornamento.
Richiesta
curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=https://www.google.com'
Risposta
{"access_token": "access-token",
"expires_in": 3599,
"refresh_token": "refresh-token",
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer" }
4 Chiamata API
L'autorizzazione non è completata finché non effettui la prima chiamata con il nuovo token di accesso devices.list
. Questa chiamata iniziale completa la procedura di autorizzazione e attiva gli eventi se hai già configurato un abbonamento Pub/Sub.
Per completare l'autorizzazione, devi utilizzare una delle chiamate API elencate per l'ambito specificato.
sdm.service
dispositivi
Per ulteriori informazioni, consulta la documentazione dell'API
devices.list
.
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
5 Token di aggiornamento
I token di accesso per l'API SDM sono validi solo per un'ora, come indicato nel parametro expires_in
restituito da Google OAuth. Se il token di accesso scade, utilizza il token di aggiornamento per ottenerne uno nuovo.
Apri un terminale ed esegui il seguente comando curl
, sostituendo:
- oauth2-client-id e oauth2-client-secret con l'ID client e il client secret OAuth2 delle tue credenziali Google Cloud
- refresh-token con il codice che hai ricevuto inizialmente quando hai ottenuto il token di accesso.
Google OAuth restituisce un nuovo token di accesso.
Richiesta
curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'
Risposta
{"access_token": "new-access-token",
"expires_in": 3599,
"scope": "https://www.googleapis.com/auth/sdm.service",
"token_type": "Bearer" }