无法使用 'metadata-only' URI 发送消息
Can't use 'metadata-only' URI to send messages
我正在尝试复制位于页面底部的 API 资源管理器的功能:
https://developers.google.com/gmail/api/v1/reference/users/messages/send
我已经弄清楚如何创建 base64 编码的消息并可以让 API Explorer 发送消息,但我试图在 "Advanced REST Client" Chrome 应用程序中复制结果。
我已将 url 设置为:
https://www.googleapis.com/gmail/v1/users/me/messages/send
我添加了以下内容headers:
Authorization: Bearer (valid Oauth2 token here)
Content-Type: message/rfc822
并将body设置为:
{"raw":"Q29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSINCk1JTUUtVmVyc2lvbjogMS4wDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0DQp0bzogYnJ5Y2VAdGhvcm1lZGlhLmNvbQ0KZnJvbTogYnJ5Y2VAdGhvcm1lZGlhLmNvbQ0Kc3ViamVjdDogVGVzdA0KDQpIZWxsbyE="}
当我发送请求时,我得到回复:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "wrongUrlForUpload",
"message": "Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/gmail/v1/users/me/messages/send"
}
],
"code": 400,
"message": "Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/gmail/v1/users/me/messages/send"
}
}
我正在尝试弄清楚如何形成允许我使用元数据 URI 的请求。 API 的文档似乎几乎只关注上传 URI,因此理解起来有点粗糙。
我不太熟悉高级 REST 客户端,但有效的 ajax 请求应该是:
$.ajax({
type: "POST",
url: "https://www.googleapis.com/gmail/v1/users/me/messages/send",
contentType: "application/json",
dataType: "json",
beforeSend: function(xhr, settings) {
xhr.setRequestHeader('Authorization','Bearer ' + accessToken);
},
data: JSON.stringify({"raw": mail}) // The url-safe base64 encoded mail
换句话说,我认为你使用了错误的contentType;当您发送带有 "raw" 参数的对象时,它应该是 "application/json",而不是 "message/rfc822"。
我正在尝试复制位于页面底部的 API 资源管理器的功能: https://developers.google.com/gmail/api/v1/reference/users/messages/send 我已经弄清楚如何创建 base64 编码的消息并可以让 API Explorer 发送消息,但我试图在 "Advanced REST Client" Chrome 应用程序中复制结果。
我已将 url 设置为:
https://www.googleapis.com/gmail/v1/users/me/messages/send
我添加了以下内容headers:
Authorization: Bearer (valid Oauth2 token here)
Content-Type: message/rfc822
并将body设置为:
{"raw":"Q29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSINCk1JTUUtVmVyc2lvbjogMS4wDQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0DQp0bzogYnJ5Y2VAdGhvcm1lZGlhLmNvbQ0KZnJvbTogYnJ5Y2VAdGhvcm1lZGlhLmNvbQ0Kc3ViamVjdDogVGVzdA0KDQpIZWxsbyE="}
当我发送请求时,我得到回复:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "wrongUrlForUpload",
"message": "Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/gmail/v1/users/me/messages/send"
}
],
"code": 400,
"message": "Uploads must be sent to the upload URL. Re-send this request to https://www.googleapis.com/upload/gmail/v1/users/me/messages/send"
}
}
我正在尝试弄清楚如何形成允许我使用元数据 URI 的请求。 API 的文档似乎几乎只关注上传 URI,因此理解起来有点粗糙。
我不太熟悉高级 REST 客户端,但有效的 ajax 请求应该是:
$.ajax({
type: "POST",
url: "https://www.googleapis.com/gmail/v1/users/me/messages/send",
contentType: "application/json",
dataType: "json",
beforeSend: function(xhr, settings) {
xhr.setRequestHeader('Authorization','Bearer ' + accessToken);
},
data: JSON.stringify({"raw": mail}) // The url-safe base64 encoded mail
换句话说,我认为你使用了错误的contentType;当您发送带有 "raw" 参数的对象时,它应该是 "application/json",而不是 "message/rfc822"。