如何在django-allauth中从经过身份验证的用户获取或创建凭据

问题描述 投票:1回答:1

我想我可能会遗漏一些明显的东西,但是我无法弄清楚问题的答案。

我在项目上设置了django-allauth,添加了Google身份验证,启用了API,运行了服务器,并成功使用了该应用程序进行身份验证。

[我被困在这里:

一旦用户通过身份验证,我希望用户能够查看其日历,但是我无法弄清楚如何使用已通过身份验证的用户的凭据来构建凭据。

我知道要获取日历,我必须运行:

service = build('calendar', 'v3', credentials=creds)
calendar = service.calendars().get(calendarId='primary').execute()
print(calendar['summary'])

但是我不知道如何为credentials建立值

非常感谢您的帮助。

django google-api google-oauth2 django-allauth
1个回答
0
投票

我能够找到答案。

  1. django-auth在用户通过身份验证时创建SocialToken的实例。
  2. 可以通过将request.user传递给模型对象的get方法来找到该标记。
  3. 一旦有了令牌,令牌的字段将传递到构造函数的参数以创建build函数所需的凭据对象。

示例:

from google.oauth2.credentials import Credentials

social_token = SocialToken.objects.get(account__user=request.user)
creds = Credentials(token=social_token.token,
                    refresh_token=social_token.token_secret,
                    client_id=social_token.app.client_id,
                    client_secret=social_token.app.secret)
service = build('calendar', 'v3', credentials=creds)
calendar = service.calendars().get(calendarId='primary').execute()
© www.soinside.com 2019 - 2024. All rights reserved.