2014-08-28 9 views
5

Desidero accedere all'API di Gmail tramite NodeJS.L'API di Gmail supporta JWT?

Sto utilizzando un approccio server-to-server (vedere this) ma quando eseguo il codice di seguito, ottengo un backEndError, codice 500 dall'API di Google.

Qualche idea?

var authClient = new google.auth.JWT(
    'email', 
    'key.pem', 
    // Contents of private_key.pem if you want to load the pem file yourself 
    // (do not use the path parameter above if using this param) 
    'key', 
    // Scopes can be specified either as an array or as a single, space-delimited string 
    ['https://www.googleapis.com/auth/gmail.readonly'] 
); 

authClient.authorize(function(err, tokens) { 
    if (err) 
     console.log(err); 

    gmail.users.messages.list({ userId: 'me', auth: authClient }, function(err, resp) { 
    // handle err and response 
    if (err) { 
     console.log(err); 
}); 
+0

+1 per una buona domanda. Non lo so, vorrei passare attraverso https://developers.google.com/accounts/docs/OAuth2Login per la seconda volta e verificare se tutti i passaggi sono come previsto (questa parte non è visibile nel codice). Un caso in cui questo probabilmente fallirebbe è se l'account "me" utilizza l'autenticazione in due passaggi. In tal caso gli agenti software devono utilizzare token speciali creati solo per loro da "me" (https://developers.google.com/google-apps/help/faq/auth#what_twostep) – xmojmr

+0

Sto anche provando a utilizzare JWT ma ottieni 'access_denied Client richiesto non autorizzato. – webjay

+0

Posso chiederti dei parametri che hai dato a' new google.auth.JWT'? Ho usato 'key.client_email' come primo parametro,' null' come secondo, 'key.private_key' come terzo e poi scopes. Dove posso dire da quale utente devo recuperare i messaggi? Ho bisogno di recuperare e-mail da vari account all'interno del dominio. – Kunok

risposta

0

Sì, ho lo stesso problema. Se uso il campo di applicazione "https://mail.google.com", ottengo

403 
{ 
    "error" : "access_denied", 
    "error_description" : "Requested client not authorized." 
} 

E se uso l'ambito "https://mail.google.com/" (notare la/alla fine), ottengo

Sembra essere correlata utilizzare JWT e l'account di servizio.