2016-05-09 28 views
9

Sto provando a seguire il tutorial this per l'autenticazione con Google utilizzando la loro API OAuth 2.0. Tuttavia, vorrei effettuare chiamate dirette curl anziché utilizzare le loro librerie.Come ottenere Google token di accesso OAuth 2.0 direttamente usando curl? (senza utilizzare Google Libraries)

Ho ottenuto il mio ID cliente e la chiave segreta del client. Ora sto cercando di ottenere il token di accesso in questo modo:

curl \ 
--request POST \ 
--header "Content-Type: application/json" \ 
--data '{ 
    "client_id":"MY_CLIENT_ID", 
    "client_secret":"MY_SECRET_KEY", 
    "redirect_uri": "http://localhost/etc", 
    "grant_type":"authorization_code" 
}' \ 
"https://accounts.google.com/o/oauth2/token" 

Tuttavia, non sta funzionando. Mi dà il seguente errore:

{ 
    "error" : "invalid_request", 
    "error_description" : "Required parameter is missing: grant_type" 
} 

qualcuno può fornirmi esempio di chiamata curl per ottenere il token di accesso (e token di aggiornamento)?

+2

Date un'occhiata a: http://stackoverflow.com/a/18260206/1503886 –

risposta

12

a) i dati forniti devono essere codificati in forma anziché presentati come oggetti JSON eb) è necessario fornire anche un valore di codice di autorizzazione nel parametro "codice". Es .:

curl -d "client_id=MY_CLIENT_ID&\ 
    client_secret=MY_SECRET_KEY&\ 
    redirect_uri=http://localhost/etc&\ 
    grant_type=authorization_code&\ 
    code=CODE" https://accounts.google.com/o/oauth2/token 
+0

Si tratta di un GET o un post? –

+0

L'uso di '-d' lo trasforma automaticamente in un POST e imposta il tipo di contenuto desiderato –

+0

Che ha funzionato per me, grazie mille! –