Errori di autorizzazione

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

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.

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

Indirizza il user al link PCM nell'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 in uso
  4. scope con uno degli 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 dovrebbe 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 usare 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 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 è completa finché non effettui una chiamata API con il token di accesso di user. Questa chiamata iniziale termina il processo di autorizzazione e abilita 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 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.

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 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"
}