这是在登录后将文件上传到Google Dive的代码。
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平台,并得到了这样的答复。
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"
}
]
}
}
答案 0 :(得分:0)
{
"error": {
"code": 403,
"message": "Insufficient Permission",
"errors": [
{
"domain": "global",
"message": "Insufficient Permission",
"reason": "insufficientPermissions"
}
]
}
}
与客户端ID无关。当用户运行您的应用程序时,系统会提示他们登录google,并同意您的应用程序访问其Google云端硬盘帐户。您将获得一个accessToken,该令牌可授予您对其驱动器帐户的访问权限。
Insufficient Permission
意味着您拥有的accessToken没有权限去做您想做的事情。我会检查您尝试上传该文件的位置。
是否已检查以确保您正在上载当前已验证用户的驱动器帐户,而不是第一个用户的驱动器帐户?
我看不到您如何验证用户身份,以确保您正在请求写作用域之一,也可能是您请求了错误的作用域。