【问题标题】:Gmail API node js - gapi not definedGmail API节点js-未定义gapi
【发布时间】:2018-01-20 04:22:10
【问题描述】:

我正在使用来自 Google Gmail API 的以下函数来获取来自用户的所有消息

/**
 * Retrieve Messages in user's mailbox matching query.
 *
 * @param  {String} userId User's email address. The special value 'me'
 * can be used to indicate the authenticated user.
 * @param  {String} query String used to filter the Messages listed.
 * @param  {Function} callback Function to call when the request is 
complete.
 */
function listMessages(userId, query, callback) {
var getPageOfMessages = function(request, result) {
    request.execute(function(resp) {
        result = result.concat(resp.messages);
        var nextPageToken = resp.nextPageToken;
        if (nextPageToken) {
            request = gapi.client.gmail.users.messages.list({
                'userId': userId,
                'pageToken': nextPageToken,
                'q': query
            });
            getPageOfMessages(request, result);
        } else {
            callback(result);
        }
    });
};
var initialRequest = gapi.client.gmail.users.messages.list({
    'userId': userId,
    'q': query
});
getPageOfMessages(initialRequest, []);
}

我收到以下错误:

var initialRequest = gapi.client.gmail.users.messages.list({ ^ ReferenceError: gapi 没有定义

我尝试用 google 替换 gapi,因为我已经为 api 模块初始化了 var google,但这没有用。我哪里错了?

【问题讨论】:

  • 尝试使用window.gapi 或global.gapi
  • @AnuragSinghBisht 都不起作用:(
  • @Arihant 你应该在你的代码中包含这个库
  • @LEQADA 你说的是哪个图书馆?我已经包含以下内容: var fs = require('fs'); var readline = require('readline'); var google = require('googleapis'); var googleAuth = require('google-auth-library');
  • @Arihant 我说的是代码中的gapi。你在哪里初始化它?我有一种感觉,它应该是在某个地方定义的库。你不能只是开始使用一些从未定义过的变量。

标签: javascript node.js google-api gmail gmail-api


【解决方案1】:

我遇到了同样的问题.. GAPI 仅用于客户端 javascript,不适用于 Nodejs 的服务器端。

1) 从 Node.js 快速入门设置示例之后 https://developers.google.com/gmail/api/quickstart/nodejs

2) 尝试使用此功能列出并获取您帐户中最近的电子邮件:

function getRecentEmail(auth) {
  const gmail = google.gmail({ version: 'v1', auth });
  gmail.users.messages.list({ auth: auth, userId: 'me', maxResults: 1, q: 'subject:()' }, function (err, response) {
    if (err) {
      console.log('The API returned an error: ' + err);
      return;
    }

    // Get the message id which we will need to retreive tha actual message next.
    var message_id = response['data']['messages'][0]['id'];

    // Retreive the actual message using the message id
    gmail.users.messages.get({ auth: auth, userId: 'me', 'id': message_id }, function (err, response) {
      if (err) {
        console.log('The API returned an error: ' + err);
        return;
      }
      // console.log(response['data']);

      var to = response['data']['payload']['headers'][4].value;
      var from = response['data']['payload']['headers'][5].value;
      var subject = response['data']['payload']['headers'][6].value;
      var email_body_raw = response['data']['payload']['body']['data'];

      // Convert encoded email body message into human readable text message
      data = email_body_raw;
      buff = new Buffer.from(data, 'base64');
      email_body_readable = buff.toString();

      console.log('content:\n' + email_body_readable + '\n__________\nto: ' + to + '\nfrom: ' + from + '\nsubject: ' + subject + '\n__________\n');
    });
  });
}


fs.readFile('credentials.json', function processClientSecrets(err, content) {
  if (err) {
    console.log('Error loading client secret file: ' + err);
    return;
  }
  //authorize(JSON.parse(content), sendMessage);
  authorize(JSON.parse(content), getRecentEmail);
});

https://developers.google.com/gmail/api/v1/reference/users/messages/list

https://developers.google.com/gmail/api/v1/reference/users/messages/get

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 2021-07-25
    • 2018-03-01
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多