Con la creazione dei progetti Google Cloud e Accesso ai dispositivi, autorizzare un Account Google con un dispositivo Google Nest supportato per API SDM.
Collega il tuo account
Per visualizzare strutture e dispositivi, devi collegare un Account Google al tuo Device Access utilizzando il PCM. PCM consente a user di concedere l'autorizzazione a consente a developerdi accedere alle proprie strutture e ai dati dei dispositivi.
In questa guida agirai come user e developer.
Apri il seguente link in un sito web del browser, sostituendo:
- project-id con il tuo Device Access Project ID
- oauth2-client-id con l'ID client OAuth2 del tuo Google Cloud Credenziali
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 viene visualizzata una schermata iniziale Scegli un account contenente un elenco Account Google. In questo caso, seleziona l'Account Google associato ai dispositivi che vuoi autorizzare per Device Access.
- La schermata delle autorizzazioni Google Nest è PCM stesso. Qui puoi concedere la struttura e le autorizzazioni del dispositivo. Attiva il autorizzazioni per la tua casa (Passaggio 1) e per i dispositivi al suo interno che sono supportate dall'API SDM (passaggio 2), quindi fai clic su Avanti.
- Nella schermata Scegli un account per andare alla sezione Nome progetto, dove Project Name è il nome del tuo progetto Google Cloud, seleziona l'Account Google che vuoi autorizzare per API SDM. Utilizza lo stesso Account Google di prima.
- Dopo aver scelto un account, potresti visualizzare una schermata di avviso che ti informa che Google non ha verificato questa app. In tal caso, per continuare, fai clic Avanzate, quindi fai clic su Vai a Nome progetto (non sicuro). Consulta Google non ha verificato questa app per ulteriori informazioni informazioni.
- Nella schermata Concedi l'autorizzazione Nome progetto, fai clic su Consenti l'autorizzazione del progetto ad accedere al tuo Account Google.
- Nella schermata Conferma le tue scelte, assicurati che le autorizzazioni desiderate da concedere e fai clic su Consenti per confermare.
Il sistema ti reindirizzerà alla pagina https://www.google.com. Il codice di autorizzazione viene restituito come parametro
code
nell'URL, che dovrebbe 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
Utilizzare 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 OAuth2 e il client secret Google Cloud Credenziali
- 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 vengono usati per ricevere un nuovo token di accesso.{
Effettuare una chiamata con elenco dispositivi
L'autorizzazione non sarà completa finché non invii
il tuo primo
devices.list
con il nuovo token di accesso. Questo
la chiamata iniziale termina il processo di autorizzazione e abilita gli eventi se
hai già configurato una sottoscrizione Pub/Sub.
Usa 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 a Device Access progetto. Ogni dispositivo ha il proprio elenco univoco di trait 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 solo
è valido per 1 ora, come indicato nel parametro expires_in
restituito da Google OAuth. Se
il token di accesso scade, utilizza il token di aggiornamento per riceverne uno nuovo.
Il comando è simile a quello del token di accesso, ad eccezione del fatto che utilizzi un altro
grant_type
.
Apri un terminale ed esegui seguente comando
curl
, sostituendo:- oauth2-client-id e oauth2-client-secret con l'ID client OAuth2 e il client secret Google Cloud Credenziali
- refresh-token con il codice che hai ricevuto quando hai ottenuto l'accesso per la prima volta 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 saperne di più su Google OAuth, consulta Utilizzo di OAuth 2.0 per accedere a Google per le API.
Il token di aggiornamento continua a scadere
I token di aggiornamento possono smettere di funzionare dopo sette giorni se l'ID client non viene approvato una possibile causa. La scadenza del token di 7 giorni non è correlata a Commerciale o le approvazioni della sandbox. Un account di servizio o utente deve ricevere OAuth ID client 2.0 approvato e messo in produzione per una maggiore durata dei token. Per ulteriori informazioni, consulta Aggiornare la scadenza del token informazioni.
Accesso negato
Se hai configurato la schermata per il consenso OAuth in Google Cloud Se il Tipo di utente è Esterno, verrà visualizzato il messaggio "Accesso negato" errore se tentativo di collegare un account a un Account Google non elencato come utente di test per la tua app. Assicurati di aggiungere l'Account Google alla sezione Utenti di test nella schermata per il consenso OAuth.
Errore di Gestione connessioni partner (PCM)
Per assistenza in merito a eventuali errori riscontrati durante l'accesso PCM, vedi Gestione connessioni partner (PCM) Riferimento errori.
Google non ha verificato questa app
L'API SDM utilizza un ambito con restrizioni, il che significa che qualsiasi le app che utilizzano questo ambito durante l'autorizzazione saranno "non verificate" a meno che La verifica dell'API OAuth è stata completata. Quando si utilizza Device Access per uso personale, la verifica dell'API OAuth non è obbligatoria.
Potresti visualizzare il messaggio "Google non ha verificato questa app" durante la fase di autorizzazione
del processo, che viene visualizzata se l'ambito sdm.service
non è configurato
la schermata per il consenso OAuth in Google Cloud. Questa schermata può essere
bypassato facendo clic sull'opzione Avanzate e quindi su Vai a Progetto
Nome (non sicuro).
Vedi App non verificata schermo per ulteriori informazioni.
Cliente non valido
Quando tenti di ottenere un token di accesso o di aggiornamento, ricevi il messaggio "Non valido
cliente" se fornisci un client secret OAuth 2.0 non corretto. Assicurati che
Il valore client_secret
che stai utilizzando nelle chiamate dei token di accesso e aggiornamento è quello
relativo all'ID client OAuth 2.0 utilizzato, come indicato
Google Cloud
Credenziali
.
Richiesta non valida, ambito obbligatorio mancante
Dopo aver concesso le autorizzazioni in PCM, è possibile che
"Richiesta non valida" errore di "Parametro obbligatorio mancante: ambito". Assicurati che
Il valore scope
che utilizzi nelle chiamate di autorizzazione corrisponde a quello che hai impostato per il client OAuth 2.0.
come quello che trovi in Google Cloud
Credenziali
.
Mancata corrispondenza URI di reindirizzamento
Durante la procedura di autorizzazione, potresti riscontrare una mancata corrispondenza dell'URI di reindirizzamento.
. Assicurati che il valore redirect_uri
che stai utilizzando nelle chiamate di autorizzazione sia
uguale a quello impostato per il client OAuth 2.0, come indicato
Google Cloud
Credenziali
.
Modifica le autorizzazioni dell'account
Per modificare le autorizzazioni concesse a un Device Access progetto, oppure scollegalo vai su PCM:
https://nestservices.google.com/partnerconnections
In questa pagina vengono visualizzati tutti i servizi per gli sviluppatori di terze parti (Device Access progetti) collegato al tuo account. Seleziona il Device Access progetto che vuoi modifica. Utilizza la schermata successiva per modificare le autorizzazioni come preferisci.
Per revocare solo autorizzazioni specifiche per un servizio autorizzato, attiva/disattiva l'opzione autorizzazioni da revocare e fai clic sulla freccia indietro per salvare.
Per scollegare completamente un servizio autorizzato, fai clic su Scollega il tuo account Google Account per revocare tutte le autorizzazioni e i token di accesso a cui è stato assegnato il progetto. concesso per l'account.
Se PCM non mostra il servizio desiderato, potresti dover effettua prima una chiamata con l'elenco dei dispositivi.
Riferimento rapido
Utilizza questo riferimento per implementare rapidamente i passaggi per autorizzare una user e collega il suo Account Google di Google.
Per utilizzare questo riferimento rapido, modifica ogni variabile segnaposto negli esempi di codice con i valori dell'integrazione specifica e copia e incolla in base alle necessità:
1 PCM
Apri il seguente link in un sito web del browser, sostituendo:
- project-id con il tuo Device Access Project ID
- oauth2-client-id con l'ID client OAuth2 del tuo Google Cloud Credenziali
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
Il sistema ti reindirizzerà alla pagina
https://www.google.com. Il codice di autorizzazione viene restituito come parametro code
nell'URL,
che dovrebbe avere questo formato:
https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
3 token di accesso
Utilizzare 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 OAuth2 e il client secret Google Cloud Credenziali
- 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 sarà completa finché non invii
il tuo primo
devices.list
con il nuovo token di accesso. Questo
la chiamata iniziale termina il processo di autorizzazione e abilita gli eventi se
hai già configurato una sottoscrizione Pub/Sub.
Devi utilizzare uno dei seguenti Chiamate API elencate per l'ambito specificato per completare l'autorizzazione.
sdm.service
dispositivi
Consulta le
devices.list
Riferimento API per ulteriori informazioni.
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'
5 Aggiorna token
I token di accesso per l'API SDM sono solo
è valido per 1 ora, come indicato nel parametro expires_in
restituito da Google OAuth. Se
il token di accesso scade, utilizza il token di aggiornamento per riceverne uno nuovo.
Apri un terminale ed esegui
seguente comando curl
, sostituendo:
- oauth2-client-id e oauth2-client-secret con l'ID client OAuth2 e il client secret Google Cloud Credenziali
- refresh-token con il codice che hai ricevuto quando hai ottenuto l'accesso per la prima volta 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" }