Errori di autorizzazione

Durante la procedura di autorizzazione, Google OAuth potrebbe restituire un errore. Utilizza questa guida per risolvere gli errori più comuni durante questo processo.

Risoluzione dei problemi

Per saperne di più su Google OAuth, vedi 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ù, 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, 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 Partner Connections Manager (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 è necessaria.

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 ulteriori informazioni, consulta la schermata dell'applicazione non verificata.

Client non valido

Quando tenti di ottenere un token di accesso o di aggiornamento, ricevi un errore "Client non valido" se fornisci un client secret OAuth 2.0 errato. Assicurati che il valore client_secret che utilizzi nelle chiamate di 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.

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

Indirizza l'utente user al link PCM nella tua app, sostituendo:

  1. project-id con il tuo ID Device Access Project
  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 dei tuoi ambiti 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 essere nel seguente 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.

Effettua una chiamata POST all'endpoint OAuth di Google, 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
  3. redirect-uri con un URI di reindirizzamento specificato per l'ID client OAuth2 che stai utilizzando

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 viene 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 il riferimento 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 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.

Effettua una chiamata POST all'endpoint OAuth di Google, 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 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/scope",
  "token_type": "Bearer"
}