django - 如何从 django-allauth 中经过身份验证的用户获取或创建凭据
问题描述
我想我可能遗漏了一些明显的东西,但我无法弄清楚我的问题的答案。
我已经django-allauth
在我的项目上进行了设置,添加了 Google 身份验证,启用了 API,运行了服务器,并成功地使用了该应用程序进行身份验证。
这是我卡住的地方:
用户通过身份验证后,我希望用户能够查看他们的日历,但我无法弄清楚如何使用已通过身份验证的用户的凭据来构建凭据。
我知道为了获得日历,我必须运行:
service = build('calendar', 'v3', credentials=creds)
calendar = service.calendars().get(calendarId='primary').execute()
print(calendar['summary'])
但我无法弄清楚如何为credentials
任何帮助将不胜感激。
解决方案
我能够找到答案。
django-auth
SocialToken
当用户通过身份验证时创建一个实例。- 可以通过传递
request.user
给模型对象的get
方法来找到该标记。 - 获得令牌后,令牌的字段将传递给构造函数的参数,以创建
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()
推荐阅读
- android - 赋值作为jetpack compose中的参数
- linux - 如何散列 csv 文件中的特定列 | linux |
- c++ - 问:访问纯数据 dll 文件中数据的正确方法
- react-native - 如何在 react-native 中长按触摸并按住
- javascript - Kendo Grid 点击的行数
- arrays - 使用 perl 在模式匹配后打印下一行
- android - 我在android中运行回收视图程序时遇到这种类型的错误
- c# - 找不到与具有绑定 NetTcpBinding 的终结点的方案 net.tcp 匹配的基地址。基地址方案是 [http]
- r - 编译为 PDF 时 bookdown 中可能存在错误。图像被边缘切割
- azure - 为什么 Fluentd Azure blob 插件在 kubernetes 中不起作用