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:
- project-id con il tuo ID Device Access Project
- oauth2-client-id con l'ID client OAuth2 delle tue credenziali Google Cloud
- redirect-uri con un URI di reindirizzamento specificato per l'ID client OAuth2 che stai utilizzando
- 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:
- 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
- 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:
- 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/scope",
"token_type": "Bearer" }