Сбой API Google Диска - необычный трафик c из вашей компьютерной сети - PullRequest
5 голосов
/ 07 февраля 2020

Запрос GET API Google Drive начал сбой (мы используем этот API в одной из наших клиентских служб):

https://www.googleapis.com/drive/v3/files/1ke4Yoxxxxxxxxxxxxxx?alt=media&access_token=ya29.ImG9BwT.....

Приносим извинения ... ... но ваш компьютер или сеть может отправлять автоматические запросы. Чтобы защитить наших пользователей, мы не можем обработать ваш запрос прямо сейчас. См. Справку Google для получения дополнительной информации ... "Необычный трафик c из вашей компьютерной сети"

До сегодняшнего дня все было в порядке.

Только что сделал пару тестов с curl:

  1. HTTP GET с access_token внутри заголовка HTTP: curl -H "Авторизация: Носитель ya29._valid_access_token" https://www.googleapis.com/drive/v3/files/1r5BT2WPrulQ6FyhT8RcqV51TVOThEmhK?alt=media

Результат: успех, файл загружен.

HTTP GET с access_token как часть HTTP-запроса: curl https://www.googleapis.com/drive/v3/files/1r5BT2WPrulQ6FyhT8RcqV51TVOThEmhK?alt=media&access_token=ya29._valid_access_token

Результат: ошибка

    {
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued       use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
 }
} 

Обратите внимание, что Google API Проект одобрен Google и имеет состояние производства !!!

Привет, команда Google, есть идеи, почему это происходит?

Спасибо

Ответы [ 2 ]

4 голосов
/ 07 февраля 2020

Размещать это только для целей документации. Согласно справке , предоставленной Tanaike , с 1 января 2020 года:

загружает вызовы в конечные точки files.get, revisions.get и files.export, которые аутентифицируются с использованием токена доступа в параметре запроса больше не будет поддерживаться .

Это изменение затрагивает только запросы на загрузку мультимедийного содержимого (alt=media).

Доступ токен должен быть предоставлен в заголовке HTTP, например Authorization: Bearer oauth2-token или, если это невозможно, следуйте обходным путям, указанным в ссылочной документации:

Для загрузки файлов перенаправьте на webContentLink, который проинструктирует браузер для загрузки контента. Если приложение хочет отобразить файл пользователю, они могут просто перенаправить на alternateLink в v2 или webViewLink в v3.

Для экспорта файла перенаправить на ссылку экспорта в exportLinks с желаемым типом mime, который будет поручить браузеру загрузить содержимое.

Ссылка:

1 голос
/ 13 февраля 2020

Публикация дополнения к документации iamblichus Speci c для данных приложения в Google Диске.

Мое приложение использует API Google Диска в серверной части для хранения документов моего пользователи на своем диске. Важно отметить, что я храню данные в папке данных приложения , так что пользователи не могут случайно удалить данные.

Чтобы пользователи могли получать свои документы, которые я использовал для перенаправил пользователя на downloadUrl: https://www.googleapis.com/drive/v2/files/id?alt=media&source=downloadUrl&access_token=ya29.**, где я добавил alt=media и access_token к запросу. Это работало нормально до 1 января 2020 года. Как подтверждено выше. Однако теперь запрос не выполняется с сообщением:

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

GET запрос downloadUrl завершился неудачей

В моих попытках найти решение этой проблемы Я пробовал обходные пути , предоставленные Google, но они по моему опыту не работают для документов в application data folder.

Я пробовал webContentLink с запрос access_token в v2, но он завершается неудачно с 401 несанкционированной ошибкой.

alternateLink в v2 и webViewLink в v3 завершаются с ошибкой:

Требуемый файл не существует.

Я могу ' не используйте exportLinks, потому что это только для Документов Google.

Я нашел решение: сначала загрузить файл на сервер, используя Google Drive PHP SDK, а затем обслужить его. моим пользователям, использующим заголовок Content-Dispostion. Такие, как описано здесь . На мой взгляд, он менее элегантен, потому что конечные пользователи не загружают документ напрямую из API Google Drive, но он работает.

Жаль, что Google не обновил свою документацию и не уведомил своих пользователей. ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...