Google Api Calendar Store Refresh Token для физических лиц
Как мне сохранить токен обновления из google api calendar и использовать его для доступа к событиям календаря пользователя.
Я пытался использовать быстрый старт на python, но он не работает. Он всегда делает редирект url mismatch Мне нужно понять, как добавить токен refresh в модель.
<a href="{% url 'social:begin' 'google-oauth2' %}" >Login With Google</a>
В настоящее время при входе в систему он связывает социальный аккаунт с пользователем и корректно перенаправляет, проходя через логин.
AUTH_USER_MODEL = 'pages.Profile'
SOCIAL_AUTH_USER_MODEL = 'pages.Profile'
# social auth configs for google
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = config('GOOGLE_OAUTH2_KEY')
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = config('GOOGLE_OAUTH2_SECRET')
SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPE = ['https://www.googleapis.com/auth/calendar']
SOCIAL_AUTH_JSONFIELD_ENABLED = True
SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {'access_type': 'offline',}
SOCIAL_AUTH_PIPELINE = (
'social_core.pipeline.social_auth.social_details',
'social_core.pipeline.social_auth.social_uid',
'social_core.pipeline.social_auth.auth_allowed',
'social_core.pipeline.social_auth.social_user',
'social_core.pipeline.user.get_username',
'social_core.pipeline.social_auth.associate_by_email', # <--- enable this one
'social_core.pipeline.user.create_user',
'social_core.pipeline.social_auth.associate_user',
'social_core.pipeline.social_auth.load_extra_data',
'social_core.pipeline.user.user_details',
)
LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = 'home'
LOGOUT_REDIRECT_URL = 'home'
Теперь в этом разделе, который имеет другой url, я хочу использовать маркер доступа, чтобы показать все события пользователя. Не уверен, как я буду использовать маркер доступа. Пусто, если нет маркера доступа, и вместо этого я бы хотел, чтобы он был по значению поля модели, чтобы я мог получить к нему доступ при обычном входе в систему, если пользователь уже делал это однажды.
@login_required
def calendar(request):
context={}
context['access_token']= get_access_token(request)
results=get_events(request)
context['results'] = results
context['nmenu'] = 'calendar'
return render(request, 'home.html', context)
def get_access_token(request):
social = request.user.social_auth.get(provider='google-oauth2')
return social.extra_data['access_token']
