Google Drive API возвращает 403 при загрузке файла - PullRequest
0 голосов
/ 24 октября 2018

Вот код для загрузки файла в погружение 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"
      }
    ]
  }
}

1 Ответ

0 голосов
/ 24 октября 2018
{
  "error": {
    "code": 403, 
    "message": "Insufficient Permission", 
    "errors": [
      {
        "domain": "global", 
        "message": "Insufficient Permission", 
        "reason": "insufficientPermissions"
      }
    ]
  }
}

Не имеет ничего общего с идентификатором клиента.Когда пользователь запускает ваше приложение, ему предлагается войти в Google и дать вашему приложению согласие на доступ к своей учетной записи на Google диске.Вам предоставляется accessToken, который предоставляет вам доступ к их учетной записи диска.

Insufficient Permission означает, что у вашего accessToken нет разрешения делать то, что вы пытаетесь сделать.Я бы проверил, где вы пытаетесь загрузить этот файл.

  • Проверено, чтобы убедиться, что вы загружаете именно аутентифицированную учетную запись пользователя, а не учетную запись первого пользователя?

  • Не могуПосмотрите, как вы аутентифицируете пользователя, убедитесь, что вы запрашиваете одну из областей записи. Возможно, вы запросили неверную область.

...