簡體   English   中英

如何使用NodeJS Gmail API提取郵件?

[英]How do I fetch messages with the NodeJS Gmail API?

我必須在NodeJS中創建一個小程序,該程序將檢查用戶帳戶中是否有新郵件,如果有新郵件,則通過SMS(使用Twilio)通知他們。 不幸的是,我在使獲取功能正常工作時遇到了麻煩。

我搜索了一段時間,所有可以找到的片段都與我在下面發布的片段相同:

var gmail = google.gmail('v1');
//console.log("auth is " + util.inspect(auth, false, null));
// Line 77 under this comment
gmail.users.messages.list({userId: 'me', auth: auth}, function(err, response) {
        console.log("this is " + util.inspect(response, false, null) + "with error " + err);
    });

運行時,它崩潰並顯示:

/Users/mirtle/Documents/Universishit/smsmirtle/node_modules/googleapis/lib/apirequest.js:180 req = authClient.request(options,callback); ^

TypeError:authClient.request不是Object.Gmail.self.users.messages.list(/Users/mirtle/Documents/Universishit/smsmirtle/node_modules/googleapis/lib/apirequest.js:180:22)上的函數/Users/mirtle/Documents/Universishit/smsmirtle/node_modules/googleapis/apis/gmail/v1.js:728:16),位於CronJob。 (/Users/mirtle/Documents/Universishit/smsmirtle/server.js:77:26)在CronJob.fireOnTick(/Users/mirtle/Documents/Universishit/smsmirtle/node_modules/cron/lib/cron.js:392:22)在callbackWrapper [as _onTimeout](/Users/mirtle/Documents/Universishit/smsmirtle/node_modules/cron/lib/cron.js:435:9)在Timer.listOnTimeout(timers.js:92:15)

就像我說的,我可以找到的所有代碼片段,包括其他StackOverflow問題中的代碼片段,都是這樣的,所以我不知道自己在做什么錯。

身份驗證令牌有效。 如果您取消注釋我的第77行注釋上方的注釋,它將正確打印。 它還運行Google提供的示例來打印標簽,並且標簽被打印出來,因此令牌是有效的並經過授權。

出於好奇,如果我這樣調用該函數:

gmail.users.messages.list({}, function(err, response){...}

沒有參數,它不會崩潰,但是會抱怨沒有userId

我也可以不使用第一個參數來調用它,但是它也抱怨沒有userId

我會很感激您能提供的任何幫助。

而不是直接使用包含access_token和其他數據的變量auth ,應首先將其設置為oauth憑證。 我也遇到同樣的問題。 我所做的是(請參見下面的代碼)

oauth2Client.setCredentials(auth);
gmail.users.messages.list({userId: 'me', auth: oauth2Client}, function(err, response){

}

然后,我成功獲取了所有電子郵件和線程ID。 希望這會幫助你。

聽起來您正在傳遞auth令牌,但是您需要傳遞auth客戶端。

我說的是列表函數的第一個參數:'{userId:'me',auth:auth}'

嘗試使您用來獲取令牌的身份驗證客戶端(例如google.auth.JWT)成為可能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM