2014-08-28 70 views
5

NodeJS kullanarak Gmail API'ya erişmek istiyorum.Gmail API, JWT'yi destekliyor mu?

Sunucudan sunucuya bir yaklaşım kullanıyorum (bkz. this) ancak aşağıdaki kodu çalıştırdığımda, Google API’nın bir 500E kodu olan bir backEndError alıyorum.

Herhangi bir fikrin var mı?

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. Bilmiyorum, https://developers.google.com/accounts/docs/OAuth2Login adresini 2 kez inceledim ve tüm adımların beklendiği gibi (bu bölüm kodunuzda görünmüyorsa) gözden geçirirdim. Muhtemelen başarısız olduğunda bir durum, 'me' hesabının iki adımlı kimlik doğrulaması kullanmasıdır. Bu durumda, yazılım ajanları yalnızca kendileri tarafından 'özel' olarak oluşturulan özel jetonları kullanmalıdır (https://developers.google.com/google-apps/help/faq/auth#what_twostep) – xmojmr

+0

Ayrıca JWT'yi kullanmaya çalışıyorum ancak 'access_denied İstenen istemci yetkilendirilmedi.' – webjay

+0

Size 'new google.auth.JWT' için verdiğiniz parametreler hakkında soru sorabilir miyim? İlk parametrem olarak 'key.client_email', ikincisi null, key.private_key' ise üçüncü olarak kullanıyorum. Hangi kullanıcının postaları alması gerektiğini nereden anlarım? Alandaki çeşitli hesaplardan e-posta almam gerekiyor. – Kunok

cevap

0

Evet, aynı soruna sahibim. Ben kapsamını "https://mail.google.com" kullanırsam,

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

olsun Ve ben kapsamını "https://mail.google.com/" (sondaki/fark) kullanırsanız, ben

, alakalı gibi görünüyor olsun JWT ve servis hesabı kullanmak. İyi bir soru için