如何在Django-allauth中从已认证的用户获取或创建凭据

3
我认为我可能错过了一些显而易见的东西,但我无法找出我的问题的答案。
我已经在我的项目中设置了django-allauth,并添加了Google身份验证,启用了API,运行了服务器,并成功地使用该应用进行身份验证。
这里是我遇到困难的地方:
一旦用户通过身份验证,我希望用户能够查看他们的日历,但我无法利用已经经过身份验证的用户的凭据来构建凭据。
我知道为了获得日历,我必须运行:
service = build('calendar', 'v3', credentials=creds)
calendar = service.calendars().get(calendarId='primary').execute()
print(calendar['summary'])

但我不知道如何构建凭证的值。

任何帮助都将不胜感激。

1个回答

3

我找到了答案。

  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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接