首页 > 解决方案 > Gmail API 方法 users.history.list 发送不完整的消息对象作为响应

问题描述

我使用带有以下 background.js 的 chrome 扩展来调用 GMail API users.history.list方法:

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
    if (changeInfo.status == 'complete') {
      chrome.identity.getAuthToken({ 'interactive': true }, function(token) {
        thisToken = token
        chrome.runtime.onMessage.addListener(
          function(request,sender,sendResponse){

            var userlist = "https://gmail.googleapis.com/gmail/v1/users/me/history?startHistoryId=<historyId>&access_token=" + thisToken
  
            var makeGetRequest = function (gapiRequestURL)
              {
                  var xmlHttp = new XMLHttpRequest();
                  xmlHttp.open( "GET", gapiRequestURL, false );
                  xmlHttp.send( null );
                  console.log(xmlHttp.responseText)
                  return xmlHttp.responseText;
              }
            makeGetRequest(userlist);
            
          }
        );
      });
    }
  })

我得到的回复是这样的:

  "history": [
    {
      "id": string,
      "messages": [
        {
          "id": string,
          "threadId": string
        }
      ]
    },

在 api 文档中显示的响应中:

{
  "id": string,
  "messages": [
    {
      object (Message)
    }
  ]
}

消息对象应具有以下字段:

{
  "id": string,
  "threadId": string,
  "labelIds": [
    string
  ],
  "snippet": string,
  "historyId": string,
  "internalDate": string,
  "payload": {
    object (MessagePart)
  },
  "sizeEstimate": integer,
  "raw": string
}

为什么我收到的消息对象只有idthreadId

标签: javascriptrestemailgmailgmail-api

解决方案


推荐阅读