Я пытаюсь использовать Google+ API для доступа к Google Диску через веб-приложение с помощью javascript. Я всегда получаю ошибку 401 Invalid Credentials, даже несмотря на то, что у меня есть действительный токен доступа, который еще не истек (подтвержден на https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=MY_ACCESS_TOKEN), я также включил Drive API и не отменил доступ к токену. Кроме того, я дважды проверял, и токен доступа определенно отправлен в заголовок авторизации (я просмотрел запрос через отладчик моего браузера). Из того, что я исследовал, это основные причины ошибки 401 Invalid Credentials. Тем не менее, я все еще получаю эти ошибки и не могу понять, почему. Вот мои файлы, которые я удалил client_id и api_key.Google+ API 401 Неверные учетные данные
Javascript:
var SCOPES = ['https://www.googleapis.com/auth/plus.login','https://www.googleapis.com/auth/drive'];
var CLIENT_ID = 'MY_CLIENT_ID';
var API_KEY = 'MY_API_ID';
function load()
{
console.log("load");
gapi.client.setApiKey(API_KEY);
window.setTimeout(checkAuth,1);
}
function checkAuth() {
console.log('checkAuth');
gapi.auth.authorize({client_id: CLIENT_ID, scope: SCOPES, immediate: false}, handleAuthResult);
}
function handleAuthResult(authResult) {
gapi.client.setApiKey(API_KEY);
if (authResult && !authResult.error)
{
makeRequest();
}
else
{
alert('error');
}
}
function makeRequest()
{
gapi.client.load('drive','v2',function()
{
var request = gapi.client.request({
'path': '/drive/v2/about',
'method': 'GET',
});
debugger;
request.execute(function(response)
{
debugger;
});
});
}
Мой HTML просто включает в себя соответствующие файлы JavaScript и вызывает метод загрузки от MyScript.
HTML:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<script src="../js/myScript.js"></script>
<script src="https://apis.google.com/js/client.js"></script>
<script src="https://apis.google.com/js/plusone.js?onload=load"></script>
</head>
<body>
</body>
</html>
Если кто-то может понять, почему я получаю 401 ошибку или как дальше найти информацию, что было бы здорово.
EDIT: Как мне создать запрос? Когда я пользуюсь
var request = gapi.client.request({
'path': '/drive/v2/about',
'method': 'GET',
});
Я могу видеть, что заголовок авторизации верен. Тем не менее, в учебниках, которые я видел, что они используют:
var request = gapi.client.drive.about.get({});
В котором запрос выглядит в отладчике моего браузера и не обязательно содержит правильный заголовок авторизации
Это решило проблему, не зная, почему установка ключа api испортила бы ее. – user2784790
Это проблема в API Drive (и нескольких других API Google). Вот связанная с этим проблема в Google+ API, если вы хотите отобразить ее для обновления по этой проблеме: https://code.google.com/p/google-plus-platform/issues/detail?id=458 – Scarygami