首页 > 解决方案 > 如何从 django-allauth 中经过身份验证的用户获取或创建凭据

问题描述

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

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

这是我卡住的地方:

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

我知道为了获得日历,我必须运行:

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

但我无法弄清楚如何为credentials

任何帮助将不胜感激。

标签: djangogoogle-apigoogle-oauthdjango-allauth

解决方案


我能够找到答案。

  1. django-authSocialToken当用户通过身份验证时创建一个实例。
  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()

推荐阅读