Errori di autorizzazione

Durante la procedura di autorizzazione, Google OAuth potrebbe restituire un errore. Consulta questa guida per risolvere i problemi più comuni durante questa procedura.

Risoluzione dei problemi

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

Il token di aggiornamento continua a scadere

I token di aggiornamento possono smettere di funzionare dopo 7 giorni se l'ID client non viene approvato è una possibile causa. 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 ulteriori informazioni, consulta 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 un account con un Account Google non elencato come utente di prova per la tua app. Assicurati di aggiungere l'Account Google alla sezione Utenti di test della 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 tenti di ottenere un token di accesso o di aggiornamento, riceverai un errore "Client non valido" se fornisci un client secret OAuth 2.0 non corretto. 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 la procedura di autorizzazione, potresti ricevere l'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.

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

Indirizza il user al link PCM nella app, 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
  3. redirect-uri con un URI di reindirizzamento specificato per l'ID client OAuth2 che stai utilizzando
  4. scope con uno degli ambito disponibili
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=redirect-uri&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/scope

2 Codice di autorizzazione

Dopo aver concesso le autorizzazioni tramite PCM per l'ambito selezionato, user deve essere reindirizzato all'URI di reindirizzamento specificato. Il codice di autorizzazione viene restituito come parametro code nell'URL, che deve avere questo formato:

redirect-uri?code=authorization-code&scope=https://www.googleapis.com/auth/scope

3 Token di accesso

Utilizza il codice di autorizzazione per recuperare un token di accesso, che puoi utilizzare per chiamare l'API SDM per conto dell'utente.

Esegui una chiamata POST all'endpoint OAuth di Google, sostituendo:

  1. oauth2-client-id e oauth2-client-secret con l'ID client e il client secret OAuth2 delle tue credenziali Google Cloud
  2. authorization-code con il codice che hai ricevuto nel passaggio precedente
  3. redirect-uri con un URI di reindirizzamento specificato per l'ID client OAuth2 in uso

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=redirect-uri'

Risposta

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/scope",
  "token_type": "Bearer"
}

4 Chiamata API

L'autorizzazione non è completata finché non effettui una chiamata API con il token di accesso di user. Questa chiamata iniziale completa la procedura di autorizzazione e attiva gli eventi.

Per completare l'autorizzazione, devi utilizzare una delle chiamate API elencate per l'ambito specificato.

sdm.service

dispositivi

Per ulteriori informazioni, consulta la documentazione di 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 Aggiorna token

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.

Esegui una chiamata POST all'endpoint OAuth di Google, sostituendo:

  1. oauth2-client-id e oauth2-client-secret con l'ID client e il client secret OAuth2 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/scope",
  "token_type": "Bearer"
}