С большинством сервисов Google можно взаимодействовать через открытый API (Application programming interface). Чтобы использовать возможности взаимодействия по максимуму, требуется пройти полную авторизацию (OAuth 2.0). Но в отличие от подобных процедур авторизации, скажем, в API ВК, с Google всё несколько сложнее, особенно учитывая небольшое упущение его разработчиков. В самой документации API Google, как будто, не вполне достаточно информации для успешной полной авторизации: у меня и ряда моих коллег попытки запросов к API сервисов Google, используя полную авторизацию (файл credentials), приводили к ошибкам. Эту ошибку я демонстрирую в самом конце этой статеички, а сама статеичка -- это порядок действий в шести шагах, который позволяет избежать этой ошибки на основе обобщения моего опыта.
Отсюда можно начать, чтобы получить общее представление
-
Далее следует настроить consent screen (To create an OAuth client ID, you must first configure your consent screen – в т.ч. создать своё приложение)
Я выбрал User type: External. Scopes не менял
-
(опционально) Протоколы взаимодействия пользователя, приложения и сервера
Создать OAuth client ID. Я создал Web client и Desktop client (могут быть привязаны к одному и тому же приложению). Получить Client ID и Client Secret, а также сохранить файл формата JSON с credentials внутри
Для проверки, что всё удалось, в API Explorer сгенерировать простейший запрос, например, как тут. Любопытно, что гугловские пакеты для Python инсталируются как google-api-python-client и google-auth-oauthlib google-auth-httplib2 , а импортируются как googleapiclient и google_auth_oauthlib
-
Заменить в запросе строку кода
credentials = flow.run_console()
наcredentials = flow.run_local_server()
. Если всё сделать правильно, получается примерно так.Дальше читать не обязательно. Но если интересна причина необходимости такой замены, то рассказываю: с 2022 года происходит такой процесс. Видимо, разработчики из Google забыли поправить в генераторе кода API Explorer. Поэтому без замены происходит следующее: если запрос написан корректно, появляется ссылка Please visit this URL to authorize this application для получения the authorization code
Но authorization code получить не удастся, потому что Error 400: invalid_request The out-of-band (OOB) flow has been blocked in order to keep users secure. Follow the Out-of-Band (OOB) flow migration guide linked in the developer docs below to migrate your app to an alternative method. Request details: redirect_uri=urn:ietf:wg:oauth:2.0:oob
Спасибо за внимание!
Комментарии (2)
rotmistrov Автор
30.01.2023 14:00Здравствуйте) Если я правильно понял вопрос, то первое. Я пользуюсь этим API для выгрузки данных из сервисов Google. Как правильно, для этого достаточно не файла с credentials, а API key. Проблема была в том, что если воспользоваться именно credentials при подаче запроса к Google, то возникала описанная в публикации ошибка (и не только у меня)
hawig
Простите за глупый вопрос, но OAuth 2.0 это про аутентификацию через Google Authenticator или аутентификация на вашем сайте через учетную запись в гугле?