通过云端function访问Gmail API

我正在尝试构build一个响应Gmail邮件发送邮件的电子邮件parsing器。 我目前能够接收和parsingpubsub消息并提取historyId,但我无法validation我的请求到gmail api。 这是我到现在为止:

//function defined outside the scope of the main function //used to create auth client function getAuthClient(event, callback) { var GoogleAuth = require('google-auth-library'); var authFactory = new GoogleAuth(); authFactory.getApplicationDefault(function (err, authClient) { if (err) { console.log('Unable to get application default credentials.'); callback(err); return; } // Create the oAuth scopes you need if (authClient.createScopedRequired && authClient.createScopedRequired()) { console.log('creating scoped client'); authClient = authClient.createScoped([ 'https://mail.google.com/' ]); } callback(null, authClient); }); } exports.gmailParser = function gmailParser (event, callback) { var path = require('path'); var base64 = require('base-64'); // Set your service account key file into the environment for the auth lib to pick up process.env['GOOGLE_APPLICATION_CREDENTIALS'] = path.resolve(__dirname, 'auth_credentials.json'); console.log(process.env['GOOGLE_APPLICATION_CREDENTIALS']); console.log(__dirname); //parse pubsub message var pubsubMessage = event.data; var baseMessage = pubsubMessage.data; var decodedMessage = base64.decode(baseMessage); var messageJSON = JSON.parse(decodedMessage); // Extract emailAddress and historyId from gmail pubsub message var historyId = messageJSON.historyId; var email = messageJSON.emailAddress; getAuthClient(null, function(err, authClient) { //import necessary libraries var google = require('googleapis'); var gmail = google.gmail('v1'); if(err) { callback(err); } // Construct a params object var params = { userId: email, startHistoryId: historyId }; //Attempt to call gmail api. This is where the error occurs. gmail.users.history.list(params, function(error, response) { if (error) { console.log('Encountered error', error); callback(error); } else { console.log('Response', response); callback(response); } }); }); }; 

代码运行成功,但我得到以下错误:

 "Error: Login Required at Request._callback (/user_code/node_modules/googleapis/node_modules/google-auth-library/lib/transporters.js:85:15) at Request.self.callback (/user_code/node_modules/googleapis/node_modules/request/request.js:188:22) at emitTwo (events.js:106:13) at Request.emit (events.js:191:7) at Request.<anonymous> (/user_code/node_modules/googleapis/node_modules/request/request.js:1171:10) at emitOne (events.js:96:13) at Request.emit (events.js:188:7) at IncomingMessage.<anonymous> (/user_code/node_modules/googleapis/node_modules/request/request.js:1091:12) at IncomingMessage.g (events.js:291:16) at emitNone (events.js:91:20)" 

我已经尝试将authClient添加到param对象,但它返回一个“错误的请求”错误。 我试着改变导入的顺序,创build了新的凭据,但是我一直没能find任何地方。 如果任何人有任何指针,将不胜感激。