Как я могу аутентифицировать с помощью Google OAuth2 в моем веб -приложении?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу аутентифицировать с помощью Google OAuth2 в моем веб -приложении?

Сообщение Anonymous »

Я написал простое веб -приложение Python, предназначенное для анализа чьего -либо школьного расписания и добавления его в их календарь Google. Он работал отлично локально, но из -за характера stastedAppflow и локального сервера, который он работает, я не мог аутентифицировать при запуске в контейнере Docker, в WSL или (я предполагаю) на сервере, на котором я буду Устроить его на. Я потратил вечность, пытаясь исправить это и, наконец, сдался. В результате я переключился на поток, что, я считаю, предназначена для веб -приложений. Тем не менее, у меня все еще есть постоянные проблемы с аутентификацией. В моей текущей итерации он перенаправляется на мой сайт после того, как я нажимаю на страницу аутентификации и не записываю файл token.json, поэтому аутентификация никогда не будет завершена. < /P>
Я хотел бы это исправить Таким образом, когда пользователь пытается предпринять действие на моем сайте, он автоматически откроет страницу аутентификации (если их учетные данные истек/не существуют), затем вернется на сайт после завершения аутентификации, написав файл token.json, разрешив, разрешив, разрешив файл, разрешая, разрешая файл. им теперь добавить события в свой календарь. Я думаю, что я смотрел на это слишком долго, однако, и не знаю, что делать на данный момент. Любая помощь будет высоко оценена. < /P>
Вот моя функция аутентификации. < /P>

Код: Выделить всё

SCOPES = os.getenv("SCOPES")

def authenticate_google():
"""Authenticate and return a Google Calendar API service instance."""
creds = None

# Token file stores the user's access and refresh tokens
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)

# If no credentials are available, prompt the user to log in
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = Flow.from_client_secrets_file(
os.getenv("GOOGLE_CREDENTIALS_PATH"),
SCOPES,
)
flow.redirect_uri = os.getenv("REDIRECT_URI")
auth_url, _ = flow.authorization_url(
access_type="offline",
include_granted_scopes="true",
prompt="consent"
)
webbrowser.open(auth_url, new=1, autoraise=True)
flow.fetch_token(authorization_response=request.url)
creds = flow.credentials

with open("token.json", "w") as token:
token.write(creds.to_json())

try:
# Build the Calendar API service
service = build('calendar', 'v3', credentials=creds)
return service
except HttpError as error:
print(f"Build failed: {error}")
< /code>
И вот мой файл .env, если это помогает: < /p>
    SCOPES=https://www.googleapis.com/auth/calendar
GOOGLE_CREDENTIALS_PATH=credentials.json
REDIRECT_URI=http://127.0.0.1:5000/
REDIRECT_PORT="5000"
Первоначально redirect_uri был в порту 55481, но затем вместо перенаправления он не загружал что -либо ...

Подробнее здесь: https://stackoverflow.com/questions/794 ... -my-webapp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»