Google GMail API Error: No label add or removes specified

Google GMail API Error: No label add or removes specified

我正在使用 google API 构建一个小型个人 Web 应用程序,但我遇到了此端点的问题:https://developers.google.com/gmail/api/reference/rest/v1/users.messages/modify

我试图通过 AJAX 调用它,但它一直告诉我:

No label add or removes specified

我觉得我遵循了此处的文档规范,但错误没有提供更多信息;我不知道该怎么做。

我也试过添加没有数据的 addLabelIds 参数,但它没有改变任何东西。

我已经尝试查找此问题,但所有解决方案似乎都与其他 API 实现的怪癖有关,而且似乎并不真正适用于我的情况。任何帮助,将不胜感激;这是非常基本的,但这是我的 AJAX 请求代码:

$.ajax({
  url: "https://gmail.googleapis.com/gmail/v1/users/me/messages/" + messageId + "/modify",
  beforeSend: function(xhr) {
    xhr.setRequestHeader("Authorization", "Bearer " + mailToken);
  },
  method: "POST",
  data: {
    "removeLabelIds": ["UNREAD"]
  },
  success: function(data) {
    ele.removeClass("unread");
  },
  fail: function(data) {
    console.log(data);
  }
});

好的,我自己找到了解决方案;我只是要 post 在这里,以防其他人遇到这个问题。

问题是您必须使用 Content-Type: application/json 发出请求,并且 POST 请求作为 JSON 字符串。

这是修改后的 AJAX 请求,它起作用了。


$.ajax({
    url: "https://content-gmail.googleapis.com/gmail/v1/users/me/messages/" + messageId + "/modify?alt=json",
    beforeSend: function (xhr) {
        xhr.setRequestHeader("Authorization", "Bearer " + mailToken);
        xhr.setRequestHeader("Content-Type", "application/json");
    },
    method: "POST",
    data: JSON.stringify({
        "removeLabelIds": [
            "UNREAD"
        ]
    }),
    success: function(data) {
        ele.removeClass("unread");
    },
    fail: function(data) {
        console.log(data);
    }
});