С большинством сервисов 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
Но 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
Спасибо за внимание!
ссылка на оригинал статьи https://habr.com/ru/post/713442/
Добавить комментарий