【问题标题】:How to get or create credentials from authenticated user in django-allauth如何从 django-allauth 中经过身份验证的用户获取或创建凭据
【发布时间】:2020-03-21 05:56:07
【问题描述】:

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

我已经在我的项目中设置了django-allauth,添加了谷歌身份验证,启用了API,运行了服务器,并成功使用了应用进行身份验证。

这就是我卡住的地方:

一旦用户通过身份验证,我希望用户能够查看他们的日历,但我不知道如何使用已通过身份验证的用户的凭据来构建凭据。

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

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: django google-api google-oauth django-allauth


    【解决方案1】:

    我找到了答案。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-05
      • 2015-04-11
      • 2017-11-29
      • 2020-07-01
      • 1970-01-01
      • 2021-06-15
      • 2021-04-07
      • 2019-12-11
      相关资源
      最近更新 更多