Ошибка Google Calendar API v3 после разрешения с помощью oauth2.0

Я последовал примеру quickstart для интеграции моего django приложения с google calendar. Разница между quickstart и моей ситуацией в том, что я просто хочу сгенерировать URL и отправить его обратно моему пользователю, через

from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/calendar']

flow = InstalledAppFlow.from_client_secrets_file(f"{PATH_TO_FILE}/{CLIENT_SECRET_FILE}", SCOPES)
(auth_url, state) = flow.authorization_url()
if is_dev():
    auth_url += '&redirect_uri=http%3A%2F%2Flocalhost%3A43759%2F'
print(auth_url)

(OBS: я добавил эту опцию is_dev, потому что отсутствие redirect_uri не рассматривалось)

Я получаю этот печатный URL и получаю следующие шаги:

1- URL из auth_url выводится, когда я запускаю программу

enter image description here

2- После выбора моего пользователя

enter image description here

3- и БАМ, я не могу продолжить (меня перенаправляют на localhost:47759 и я не могу получить доступ)

enter image description here

Что мне делать?

мы не прошли через одно решение, важно говорить о трех шагах.

1- Создайте новый мандат на Google Cloud, OAuth 2.0 Client ID for Web Application, как js origins с моим локальным url, и еще один авторизованный URL перенаправления (это перенаправление решило ошибку номер 3 в вопросе) enter image description here

2- Также я прочитал несколько примеров, и чтобы получить авторизацию пользователя, мы отправляем ему URL, если все идет нормально, он перенаправляется на нашу конечную точку, описанную выше

from google_auth_oauthlib.flow import InstalledAppFlow

SCOPES = ['https://www.googleapis.com/auth/calendar']

flow = InstalledAppFlow.from_client_secrets_file(f"{PATH_TO_FILE}/{CLIENT_SECRET_FILE}", SCOPES)
flow.redirect_uri = URL_SAVED_ON_STEP_1
(auth_url, state) = flow.authorization_url()
print(auth_url)

3- А в URL, получающем мой код, была необходима конечная точка, где мы могли бы сохранить учетные данные пользователя и использовать их, если захотим добавить событие в календарь пользователя

flow = InstalledAppFlow.from_client_secrets_file(f"{CONFIG_FILES_PATH}/{CLIENT_SECRET_FILE}", SCOPES)
flow.redirect_uri = URL_SAVED_ON_STEP_1
flow.fetch_token(authorization_response=request.url)
creds = flow.credentials
with open(f"{CONFIG_FILES_PATH}/token.json", 'w') as token:
    token.write(creds.to_json())

Итак, мы можем позволить любому пользователю поделиться своим календарем, и мы можем управлять им так, как он позволит

Вернуться на верх