Durante la procedura di autorizzazione, Google OAuth potrebbe restituire un errore. Utilizza questa guida per risolvere i problemi più comuni durante questa procedura.
Risoluzione dei problemi
Per saperne di più su Google OAuth, consulta Utilizzare OAuth 2.0 per accedere alle API di Google.
Il token di aggiornamento continua a scadere
Una delle possibili cause è che i token di aggiornamento potrebbero smettere di funzionare dopo 7 giorni se l'ID client non è approvato. La scadenza del token dopo 7 giorni 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 ottenere una durata dei token più lunga. Per saperne di più, consulta Scadenza del token di aggiornamento.
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 non elencato come utente di test per la tua app. Assicurati di aggiungere l'Account Google alla sezione Utenti di test nella schermata per il consenso OAuth.
Errore di Gestione connessioni partner (PCM)
Per assistenza in caso di errori riscontrati durante l'accesso a PCM, consulta Riferimento agli errori di Gestione connessioni partner (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 dell'API OAuth. Quando viene utilizzato Device Access per uso personale, la verifica dell'API OAuth non è obbligatoria.
Durante la procedura di autorizzazione, potresti visualizzare la schermata "Google non ha verificato questa app" se l'ambito sdm.service non è configurato nella
tua schermata per il consenso OAuth in Google Cloud. Puoi ignorare questa schermata facendo clic sull'opzione Avanzate e poi su Vai a Nome progetto (non sicuro).
Per saperne di più, consulta Schermata dell'app non verificata.
Client non valido
Quando tenti di ottenere un token di accesso o un token di aggiornamento, riceverai un errore "Client non valido" se fornisci un client secret OAuth 2.0 errato. Assicurati che il
client_secret valore che stai utilizzando nelle chiamate ai token di accesso e ai token di aggiornamento sia quello
dell'ID client OAuth 2.0 in uso, come indicato nella pagina
Credenziali
di 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
scope valore che stai utilizzando nelle chiamate di autorizzazione sia lo stesso che hai impostato per il client OAuth 2.0,
come indicato nella pagina Credenziali
di 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 stai utilizzando nelle chiamate di autorizzazione sia
lo stesso che hai impostato per il client OAuth 2.0, come indicato nella pagina
Credenziali
di 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 della tua integrazione specifica, quindi copia e incolla in base alle esigenze:
1 PCM
Indirizza l' user al link PCM nella tua app, sostituendo:
- project-id con il tuo Device Access Project ID
- oauth2-client-id con l'ID client OAuth2 delle tue credenziali di Google Cloud
- redirect-uri con un URI di reindirizzamento specificato per l' ID client OAuth2 che stai utilizzando
- 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, l'utente user dovrebbe 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 di 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 è completa finché non effettui una chiamata API con il user's token di accesso. 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 saperne di più, consulta il
devices.list
riferimento API.
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 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 di Google Cloud
- refresh-token con il codice che hai ricevuto quando hai ottenuto inizialmente il token di accesso token.
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"
}