Autorizza un account

Dopo aver creato i progetti Google Cloud e Device Access, puoi autorizzare un Account Google con un dispositivo Google Nest supportato per l'API SDM.

Per visualizzare strutture e dispositivi, devi collegare un Account Google al tuo Device Access progetto utilizzando il PCM. PCM consente di user concedere l'autorizzazione per consentire developerl'accesso alle proprie strutture e ai dati del dispositivo.

In questa guida, fungono sia da user sia da developer.

  1. Apri il seguente link in un browser web, sostituendo:

    1. project-id con il tuo Device Access Project ID
    2. 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. Se di recente hai eseguito l'accesso a Google con più account, potresti visualizzare una schermata iniziale Scegli un account in cui è presente un elenco dei tuoi Account Google. In questo caso, seleziona l'Account Google associato ai dispositivi che vuoi autorizzare per Device Access.
  3. La schermata Autorizzazioni Google Nest è PCM stesso. Qui puoi concedere autorizzazioni alla struttura e al dispositivo. Attiva le autorizzazioni per la tua casa (passaggio 1) e per tutti i dispositivi della casa supportati dall'API SDM (passaggio 2), quindi fai clic su Avanti.
  4. Nella schermata Scegli un account per passare a Nome progetto, dove Nome progetto è il nome del tuo progetto Google Cloud, seleziona l'Account Google che vuoi autorizzare per l'API SDM. Usa lo stesso Account Google di prima.
  5. 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, quindi fai clic su Vai a Nome progetto (non sicuro). Per ulteriori informazioni, visita la pagina Google non ha verificato questa app.
  6. Nella schermata Concedi l'autorizzazione Nome progetto, fai clic su Consenti per concedere al progetto l'autorizzazione ad accedere al tuo Account Google.
  7. Nella schermata Conferma le tue scelte, assicurati che le autorizzazioni che vuoi concedere siano selezionate e fai clic su Consenti per confermare.
  8. Dovresti essere reindirizzato 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
    
  9. Copia il codice di autorizzazione.

Ottenere un token di accesso

Utilizza il codice di autorizzazione per recuperare un token di accesso che puoi usare per chiamare l'API SDM.

  1. Apri un terminale ed esegui il seguente comando curl, sostituendo:

    1. oauth2-client-id e oauth2-client-secret con l'ID client OAuth2 e il client secret delle tue credenziali Google Cloud
    2. 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'
    
  2. Google OAuth restituisce due token, un token di accesso e un token di aggiornamento.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    Copia entrambi i valori. Il token di accesso viene utilizzato per chiamare l'API SDM, mentre il token di aggiornamento viene usato per ottenere un nuovo token di accesso.

Effettua una chiamata dall'elenco dei dispositivi

L'autorizzazione non è completa finché non effettui la prima chiamata a devices.list con il nuovo token di accesso. Questa chiamata iniziale completa il processo 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 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 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, con la differenza che utilizzi un grant_type diverso.

  1. Apri un terminale ed esegui il seguente comando curl, sostituendo:

    1. oauth2-client-id e oauth2-client-secret con l'ID client OAuth2 e il client secret delle tue credenziali Google Cloud
    2. refresh-token con il codice che hai ricevuto quando hai ricevuto 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'
    
  2. 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"
    }

Risolvere i problemi

Per scoprire di più su Google OAuth, consulta Utilizzo di OAuth 2.0 per accedere alle API di Google.

Il token di aggiornamento continua a scadere

Una delle possibili cause può essere interrotta dai token di aggiornamento dopo 7 giorni. La scadenza di 7 giorni del token non è correlata alle approvazioni commerciali o sandbox. Un account di servizio o utente deve ottenere l'approvazione dell'ID client OAuth 2.0 e metterlo in produzione per prolungare la durata dei token. Per saperne di più, consulta Aggiornare la scadenza del token.

Accesso negato

Se hai configurato la schermata di consenso OAuth in Google Cloud e il Tipo di utente è Esterno, riceverai l'errore "Accesso negato" se tenti di collegare un account con un Account Google non indicato come utente di test per la tua app. Assicurati di aggiungere l'Account Google alla sezione Utenti di prova nella schermata di consenso OAuth.

Errore di Gestione connessioni partner (PCM)

Per assistenza su eventuali errori riscontrati durante l'accesso a PCM, consulta la pagina Riferimento errori Partner Connections Manager (PCM).

Google non ha verificato questa app

L'API SDM utilizza un ambito con restrizioni, 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 dell'API OAuth. Per l'uso Device Access personale, non è richiesta la verifica dell'API OAuth.

Durante la procedura di autorizzazione, potrebbe essere visualizzata una schermata "Google non ha verificato questa app", che viene visualizzata se l'ambito sdm.service non è configurato nella schermata di consenso OAuth in Google Cloud. Questa schermata può essere ignorata facendo clic sull'opzione Avanzate, quindi su Vai a Nome progetto (non sicuro).

Vedi Schermata App non verificata per ulteriori informazioni.

Cliente non valido

Quando cerchi di ottenere un token di accesso o di aggiornamento, riceverai un errore "Client non valido" se fornisci un client secret OAuth 2.0 errato. Assicurati che il valore client_secret che stai utilizzando nelle chiamate ai token di accesso e aggiornamento sia quello per l'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 stai utilizzando nelle chiamate di autorizzazione sia lo stesso che hai impostato per il client OAuth 2.0, come indicato nella pagina Credenziali Google Cloud.

Mancata corrispondenza dell'URI di reindirizzamento

Durante la procedura di autorizzazione, potresti ricevere l'errore "Mancata corrispondenza dell'URI di reindirizzamento". Assicurati che il valore redirect_uri che stai utilizzando nelle chiamate di autorizzazione sia lo stesso che hai impostato per il client OAuth 2.0, come indicato nella pagina Credenziali Google Cloud.

Modifica le autorizzazioni dell'account

Per modificare le autorizzazioni concesse a un Device Access progetto o disconnetterlo 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 dall'elenco dispositivi.

Riferimento rapido

Utilizza questo riferimento per implementare rapidamente i passaggi per autorizzareuser e collegare il relativo Account Google.

Per utilizzare questo riferimento rapido, modifica ogni variabile segnaposto negli esempi di codice con i valori per l'integrazione specifica e copia e incolla in base alle esigenze:

1 PCM

Apri il seguente link in un browser web, sostituendo:

  1. project-id con il tuo Device Access Project ID
  2. 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 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

Utilizza il codice di autorizzazione per recuperare un token di accesso che puoi usare per chiamare l'API SDM.

Apri un terminale ed esegui il seguente comando curl, sostituendo:

  1. oauth2-client-id e oauth2-client-secret con l'ID client OAuth2 e il client secret delle tue credenziali Google Cloud
  2. 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 prima chiamata a devices.list con il nuovo token di accesso. Questa chiamata iniziale completa il processo 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 ulteriori informazioni, consulta il riferimento 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:

  1. oauth2-client-id e oauth2-client-secret con l'ID client OAuth2 e il client secret delle tue credenziali Google Cloud
  2. refresh-token con il codice che hai ricevuto quando hai ricevuto 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"
}