2014-08-28 154 views
5

我想使用NodeJS訪問Gmail API。Gmail API是否支持JWT?

我正在使用服務器到服務器的方法(請參閱this),但是當我執行下面的代碼時,我從Google API得到一個backEndError代碼500。

任何想法?

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爲好問題。我不知道,我會第二次瀏覽https://developers.google.com/accounts/docs/OAuth2Login並檢查是否所有步驟都符合預期(此部分在您的代碼中不可見)。一種情況下,這可能會失敗,如果'我'帳戶使用兩步驗證。在這種情況下,軟件代理需要使用'me'爲其創建的特殊令牌(https://developers.google.com/google-apps/help/faq/auth#what_twostep) – xmojmr 2014-08-30 03:27:26

+0

我也試圖使用JWT但得到'access_denied請求的客戶端沒有授權.' – webjay 2014-09-15 18:24:45

+0

我可以問你關於'new google.auth.JWT'的參數嗎?我使用'key.client_email'作爲第一個參數,'null'作爲第二個參數,'key.private_key'作爲第三個參數,然後作用於作用域。我應該從哪個用戶那裏獲取郵件?我需要從域內的各個帳戶獲取電子郵件。 – Kunok 2016-09-09 13:10:47

回答

0

是的,我有同樣的問題。如果我使用的範圍「https://mail.google.com」,我得到

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

如果我使用的範圍「https://mail.google.com/」(注意末尾的/),我得到

這似乎是相關的使用JWT和服務帳戶。