Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest Can';t使用';仅元数据';发送消息的URI_Rest_Gmail Api - Fatal编程技术网

Rest Can';t使用';仅元数据';发送消息的URI

Rest Can';t使用';仅元数据';发送消息的URI,rest,gmail-api,Rest,Gmail Api,我正在尝试复制API Explorer的功能,该功能位于页面底部的以下位置: 我已经知道如何创建base64编码的消息,并可以让API浏览器发送消息,但我正在尝试在“Advanced REST Client”Chrome应用程序中复制结果 我已将我的url设置为: https://www.googleapis.com/gmail/v1/users/me/messages/send 我添加了以下标题: Authorization: Bearer (valid Oauth2 token here)

我正在尝试复制API Explorer的功能,该功能位于页面底部的以下位置: 我已经知道如何创建base64编码的消息,并可以让API浏览器发送消息,但我正在尝试在“Advanced REST Client”Chrome应用程序中复制结果

我已将我的url设置为:

https://www.googleapis.com/gmail/v1/users/me/messages/send
我添加了以下标题:

Authorization: Bearer (valid Oauth2 token here)

Content-Type: message/rfc822
并将主体设置为:

{"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

换句话说,我认为您使用了错误的内容类型;当您发送带有“raw”参数的对象时,它应该是“application/json”,而不是“message/rfc822”。

您是否使用了此链接中提到的相同示例代码我在该页面上使用了python示例,以确保生成了有效的base64编码消息,但除此之外,代码并不能帮助我理解RESTAPI,因为它都是在客户机库中抽象出来的。我一直在挖掘python库的源代码,试图获得一个想法,但我不理解其中90%的内容,就是这样。我想这意味着它应该是JSON,因为它是我正在传递的JSON对象。我想问题在于,它特意声明应该使用“message/rfc822”内容类型头,而没有提及任何替代方法。无论如何,谢谢!是的,我同意。文档仍然有缺陷:)很高兴我能帮上忙@Thole你能解释一下你如何传递上面的accessToken和你如何在中传递accessToken之间的区别吗?你上面的答案对我很有用,但我无法得到与工作相关的答案,我不明白为什么。@DanKlos他们应该是等价的。你犯了什么错误?有一个头
授权
和字符串
'Bearer'
作为值应该就可以了@Thole这是400种,但我现在记不清了。知道它们是等价的,我确信这只是我的一个语法错误——我是个新手。