Una volta creati i progetti Google Cloud e Device Access, puoi autorizzare un Account Google con un dispositivo Google Nest supportato per l'API SDM.
Collega il tuo account
Per visualizzare le strutture e i dispositivi, devi collegare un Account Google al tuo progettoDevice Access utilizzando PCM. PCM consente a user di concedere l'autorizzazione a consentire a developerdi accedere ai dati delle proprie strutture e dei propri dispositivi.
In questa guida, svolgi il ruolo sia di user che di developer.
Apri il seguente link in un browser web, sostituendo:
- project-id con il tuoProject ID Device Access
- 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 collegato ai dispositivi che vuoi autorizzare per Device Access.
- La schermata Autorizzazioni Google Nest è PCM stessa. Qui puoi concedere le autorizzazioni per la casa e i dispositivi. Attiva/disattiva le autorizzazioni per la tua casa (passaggio 1) e per tutti i dispositivi della casa supportati dall'API SDM (passaggio 2), poi 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 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 saperne di più, consulta Google non ha verificato questa app.
- Nella schermata Concedi 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 a https://www.google.com. Il codice di autorizzazione viene restituito come parametro
codenell'URL, che deve essere nel seguente 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 OAuth2 e il client secret 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 questi 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.{"access_token": "access-token","expires_in": 3599,"refresh_token": "refresh-token","scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Effettuare una chiamata all'elenco dei dispositivi
L'autorizzazione non è completa finché non effettui
la tua prima
chiamata devices.list con il nuovo token di accesso. Questa
chiamata iniziale completa la procedura di autorizzazione e abilita gli eventi se
hai già configurato una sottoscrizione 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 progetto Device Access. Ogni dispositivo ha il proprio elenco univoco di tratti 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 1 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 diverso
grant_type.
Apri un terminale ed esegui il comando
curlseguente, sostituendo:- oauth2-client-id e oauth2-client-secret con l'ID client OAuth2 e il client secret delle tue credenziali Google Cloud
- refresh-token con il codice che hai ricevuto quando hai ottenuto inizialmente 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.
{"access_token": "new-access-token","expires_in": 3599,"scope": "https://www.googleapis.com/auth/sdm.service","token_type": "Bearer" }
Risoluzione dei problemi
Per saperne di più su Google OAuth, consulta 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. Questa è una possibile causa. La scadenza del token di 7 giorni non è correlata alle approvazioni commerciali o sandbox. Un servizio o un account utente deve ottenere l'approvazione e la messa in produzione dell'ID client OAuth 2.0 per ottenere durate più lunghe dei token. Per saperne di più, vedi 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, riceverai un errore "Accesso negato" se tenti di collegare l'account con un Account Google che non è elencato come utente di prova per la tua app. Assicurati di aggiungere l'Account Google alla sezione Utenti di prova nella schermata per il consenso OAuth.
Errore di Gestione connessioni partner (PCM)
Per assistenza in caso di errori riscontrati durante l'accesso a PCM, vedi Riferimento 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 venga completata la verifica API OAuth. Quando utilizzi Device Access per uso personale, la verifica 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ò essere
ignorata facendo clic sull'opzione Avanzate e poi su Vai a Nome
progetto (non sicuro).
Per saperne di più, consulta la schermata dell'app non verificata.
Client non valido
Quando tenti di ottenere un token di accesso o di aggiornamento, riceverai un errore "Invalid
client" se fornisci un client secret OAuth 2.0 errato. Assicurati che il valore
client_secret che utilizzi nelle chiamate dei token di accesso e 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" di "Parametro obbligatorio mancante: ambito". Assicurati che il valore
scope che utilizzi nelle chiamate di autorizzazione sia lo stesso che hai impostato per il client OAuth 2.0,
come indicato nella pagina Credenziali
Google Cloud.
URI di reindirizzamento non corrispondente
Durante l'autorizzazione, potresti riscontrare un errore "URI di reindirizzamento non corrispondente". Assicurati che il valore redirect_uri che utilizzi nelle chiamate di autorizzazione sia
lo stesso che hai 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 progetto Device Access o disconnetterlo completamente, vai a PCM:
https://nestservices.google.com/partnerconnections
Questa pagina mostra tutti i servizi per sviluppatori di terze parti (progettiDevice Access ) collegati al tuo account. Seleziona il progetto Device Access che vuoi 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 disconnettere 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 prima una chiamata all'elenco dei dispositivi.
Riferimento rapido
Utilizza questo 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 e copia e incolla in base alle esigenze:
1 PCM
Apri il seguente link in un browser web, sostituendo:
- project-id con il tuoProject ID Device Access
- 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 a
https://www.google.com. Il codice di autorizzazione viene restituito come parametro code nell'URL,
che deve essere nel seguente 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 OAuth2 e il client secret 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 è completa finché non effettui
la tua prima
chiamata devices.list con il nuovo token di accesso. Questa
chiamata iniziale completa la procedura di autorizzazione e abilita gli eventi se
hai già configurato una sottoscrizione Pub/Sub.
Per completare l'autorizzazione, devi utilizzare una delle chiamate API elencate per l'ambito specificato.
sdm.service
dispositivi
Per saperne di più, consulta il
devices.list
riferimento API.
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 validi solo 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 ottenerne uno nuovo.
Apri un terminale ed esegui il comando curl seguente, sostituendo:
- oauth2-client-id e oauth2-client-secret con l'ID client OAuth2 e il client secret delle tue credenziali Google Cloud
- refresh-token con il codice che hai ricevuto quando hai ottenuto inizialmente 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"
}