【发布时间】:2019-03-28 15:02:52
【问题描述】:
这是登录后将文件上传到 Google 潜水的代码。
var accessToken = this.userData.token; // Here gapi is used for retrieving the access token.
console.log("accessToken :: " + accessToken);
var form = new FormData();
form.append('metadata', new Blob([JSON.stringify(metadata)], {type: 'application/json'}));
form.append('file', file);
var xhr = new XMLHttpRequest();
xhr.open('post', 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id');
xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
xhr.responseType = 'json';
console.log("XHR :: " + Object.values(xhr));
xhr.onload = () => {
console.log(xhr.response.id); // Retrieve uploaded file ID.
};
xhr.send(file);
console.log("success.");
如果我使用用于生成 client_id 和 app_key 的帐户,它可以发布文件数据,但如果我使用任何其他帐户,则会出现如下错误。
https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id 403
我使用相同的详细信息检查了 oAuth plaground,并得到了这样的响应。
Www-authenticate: Bearer realm="https://accounts.google.com/", error=insufficient_scope, scope="https://www.googleapis.com/auth/drive"
{
"error": {
"code": 403,
"message": "Insufficient Permission",
"errors": [
{
"domain": "global",
"message": "Insufficient Permission",
"reason": "insufficientPermissions"
}
]
}
}
【问题讨论】:
标签: javascript angular oauth google-drive-api google-oauth