Авторизация OAuth 2.0 от Google, небольшое упущение его разработчиков и Python
С большинством сервисов Google можно взаимодействовать через открытый API (Application programming interface). Чтобы использовать возможности взаимодействия по максимуму, требуется пройти полную авторизацию (OAuth 2.0). Но в отличие от подобных процедур авторизации, скажем, в API ВК, с Google всё несколько сложнее, особенно учитывая небольшое упущение его разработчиков. В самой документации API Google, как будто, не вполне достаточно информации для успешной полной авторизации. Обобщение моего опыта и составило основу изложения шести шагов успешной полной авторизации.
Отсюда можно начать, чтобы получить общее представление
Далее следует настроить 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 года происходит такой процесс: https://developers.google.com/identity/protocols/oauth2/resources/oob-migration Видимо, разработчики из Google забыли поправить в генераторе кода API Explorer. Поэтому без замены происходит следующее: если запрос написан корректно, появляется ссылка Please visit this URL to authorize this application для получения the authorization code
Если не произвести замену, то исполняется Out-of-Band (OOB) flowНо 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
Если не произвести замену, то Error 400: invalid_request The out-of-band (OOB)
Спасибо за внимание!