Javascript 如何使用API google drive更改文件权限

Javascript 如何使用API google drive更改文件权限,javascript,google-drive-api,Javascript,Google Drive Api,我试图发送正文中的权限类型字段(数据),但未成功 文档表明:在主体上发送权限和角色 文档链接: 我得到了这个答案 { "error": { "errors": [ { "domain": "global", "reason": "required", "message": "The permission type

我试图发送正文中的权限类型字段(数据),但未成功

文档表明:在主体上发送权限和角色

文档链接:

我得到了这个答案

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "The permission type field is required.",
    "locationType": "other",
    "location": "permission.type"
   }
  ],
  "code": 400,
  "message": "The permission type field is required."
 }
}
这是我的代码结构,我将不胜感激

const file=this.file;
var FileID=“16myyu1bxfk1tvvmrpicyqdc3snyxsig2”;
const fr=new FileReader();
fr.readAsDataURL(文件);
fr.onload=函数(){
const boundary=“xxxxxxxxx”;
let data=“-->+边界+”\n”;
数据+=“内容类型:应用程序/json;字符集=UTF-8\n\n”;
data+=JSON.stringify({role:“reader”,键入:“anywhere”})+“\n”;
$.ajax({
类型:“POST”,
发送前:功能(请求){
setRequestHeader(“授权”、“承载”+“”+localStorage.getItem(“accessToken”);
request.setRequestHeader(“内容类型”,“边界=+边界”);
},
url:“https://www.googleapis.com/drive/v3/files/“+FileID+”/permissions”,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(错误){
console.log(错误);
},
async:true,
数据:数据,
cache:false,
processData:false,
超时:60000
});

}
我相信你的目标和情况如下

  • 您希望使用ajax将权限创建为
    {role:“reader”,键入:“anywhere”}
  • 您的访问令牌可用于使用驱动器API创建权限
修改点:
  • 在这种情况下,
    JSON.stringify({role:“reader”,type:“anyone”})
    可以像请求头的
    data:JSON.stringify({role:“reader”,type:“anyone”})
    一样直接使用
  • 请使用
    application/json
    作为请求头的内容类型
当上述各点反映到脚本中时,它将变成如下所示

修改脚本: 发件人: 致: 参考:
const boundary = "xxxxxxxxxx";
let data = "--" + boundary + "\n";
data += "Content-Type: application/json; charset=UTF-8\n\n";
data += JSON.stringify({role: "reader", type: "anyone"}) + "\n";
$.ajax({
    type: "POST",
    beforeSend: function(request) {
        request.setRequestHeader("Authorization", "Bearer" + " " + localStorage.getItem("accessToken"));
        request.setRequestHeader("Content-Type", "boundary=" + boundary); 
    },
    url: "https://www.googleapis.com/drive/v3/files/" + FileID + "/permissions",
    success: function (data) {
        console.log(data);
    },
    error: function (error) {
        console.log(error);
    },
    async: true,
    data: data,
    cache: false,
    processData: false,
    timeout: 60000
});
$.ajax({
  type: "POST",
  beforeSend: function(request) {
    request.setRequestHeader("Authorization", "Bearer" + " " + localStorage.getItem("accessToken"));
    request.setRequestHeader("Content-Type", "application/json"); // Modified
  },
  url: "https://www.googleapis.com/drive/v3/files/" + FileID + "/permissions",
  success: function (data) {
    console.log(data);
  },
  error: function (error) {
    console.log(error);
  },
  async: true,
  data: JSON.stringify({role: "reader", type: "anyone"}), // Modified
  cache: false,
  processData: false,
  timeout: 60000
});