我有使用xmlhttprequest的上传文件,但是我使用的是Service Worker,所以我改用fetch。
发送请求时出现401错误,但我知道我有访问令牌。
function uploadFile() {
let accessToken = gapi.auth.getToken().access_token; // Google Drive API Access Token
let fileContent = document.querySelector('#content').value; // As a sample, upload a text file.
console.log('File Should Contain : ' + fileContent);
let file = new Blob([fileContent], { type: 'application/text' });
let metadata = {
name: 'Background', // Filename
mimeType: 'text/plain', // mimeType at Google Drive
parents: ['root'], // Folder ID in Google Drive
};
let form = new FormData();
form.append(
'metadata',
new Blob([JSON.stringify(metadata)], { type: 'application/json' })
);
form.append('file', file);
fetch(
'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id',
{
method: 'POST',
headers: new Headers({ Authorization: 'Bearer' + accessToken }),
body: form,
}
)
.then((res) => {
return res.json();
})
.then(function (val) {
console.log(val);
});
}
有人知道我想念什么吗?
这是我收到的错误
error:
code: 401
errors: Array(1)
0: {domain: "global", reason: "authError", message: "Invalid Credentials", locationType: "header", location: "Authorization"}
length: 1
__proto__: Array(0)
message: "Invalid Credentials"
__proto__: Object
__proto__: Object
答案 0 :(得分:2)
我认为您发布Invalid Credentials
的原因是headers: new Headers({ Authorization: 'Bearer' + accessToken }),
。请进行如下修改。
headers: new Headers({ Authorization: 'Bearer' + accessToken }),
headers: new Headers({ Authorization: 'Bearer ' + accessToken }),
之前添加Bearer
的空格。