Ответ
Аутентификация через Google реализуется с помощью протокола OAuth 2.0. Он позволяет приложению получать доступ к данным пользователя на сервисах Google с его разрешения, не запрашивая логин и пароль напрямую.
Основной флоу для серверного приложения:
- Пользователь инициирует вход через Google.
- Приложение перенаправляет пользователя на страницу согласия Google с указанием запрашиваемых прав (
scopes). - После согласия Google перенаправляет пользователя обратно в приложение с временным кодом авторизации.
- Приложение обменивает этот код на
access tokenиrefresh token. access tokenиспользуется для запросов к Google API от имени пользователя.
Для упрощения этого процесса в Python используется библиотека google-auth-oauthlib.
Пример для локального скрипта:
from google_auth_oauthlib.flow import InstalledAppFlow
# Укажите права доступа, которые нужны вашему приложению
SCOPES = ['https://www.googleapis.com/auth/userinfo.profile']
# Загрузка учетных данных из файла, полученного в Google Cloud Console
flow = InstalledAppFlow.from_client_secrets_file(
'client_secret.json',
SCOPES
)
# Запуск локального сервера для прохождения аутентификации в браузере
credentials = flow.run_local_server(port=0)
# credentials теперь можно использовать для авторизованных запросов
# Например, сохранить их для будущего использования
with open('token.json', 'w') as token_file:
token_file.write(credentials.to_json())
print("Аутентификация прошла успешно!")
Ключевые моменты:
- Необходимо создать проект в Google Cloud Console и получить
client_secret.json. - Важно правильно настроить Redirect URIs для вашего приложения.
access tokenимеет короткий срок жизни, для долгосрочного доступа используетсяrefresh token.