【问题标题】:django-social-auth : connected successfully, how to query for users now?django-social-auth : 连接成功,现在如何查询用户?
【发布时间】:2012-06-27 18:25:48
【问题描述】:

我已经开始使用https://github.com/omab/django-social-auth 并能够通过 twitter、google 和 facebook 成功登录。

需要

我需要查询登录用户才能做更多事情,我应该使用哪个模型?

我没有看到任何例子

谢谢

更新

@Omab,我不明白这是如何工作的,请你帮忙。当我使用 twitter 登录时,回调转到以下代码

@login_required
def done(request):
    """Login complete view, displays user data"""
    ctx = {
        'version': version,
        'last_login': request.session.get('social_auth_last_login_backend')
    }
    logging.warn('context - ' + str(ctx))
    logging.warn('request - ' + str(request))
    return render_to_response('home.html', ctx, RequestContext(request))

你能告诉我如何在这里访问用户实例吗?

谢谢

【问题讨论】:

    标签: python django django-socialauth


    【解决方案1】:

    应用程序使用UserSocialAuth 模型存储社交帐户详细信息,检索任何实例只需这样做:

    user.social_auth.filter(provider="...")
    

    地点:

    • user 是一个用户实例(request.user 代表当前登录的用户)
    • provider 是一个带有提供商名称(facebook、twitter 等)的字符串

    UserSocialAuth 实例存储了调用所需 API 所需的令牌:

    print user_social_auth.tokens
    {...}
    

    【讨论】:

    • 我更新了代码,还是看不清楚,请帮忙看看?
    • 嗨@omab,你能帮忙吗?我还是没有得到任何东西,我也更新了代码
    • @daydreamer,在一个视图中,您可以通过request.user 访问用户实例。如果已登录,则实例在调用request.user.is_authenticated() 时将响应True
    • @omab 在我的情况下,此方法不会返回与直接从 social_auth.models 导入 UserSocialAuth 相同的实例。使用这种方法,我错过了一些字段,例如 extra_data、tokens……我哪里错了?
    • @Bastian,不确定,取决于您获得的实例类型,也许还有另一个应用程序冲突?
    【解决方案2】:

    按照 K-man 的建议,您可以试试这个 (Identifying the backend provider of a logged in user):

        request.user.social_auth.values_list('provider')
    

    您可以在 values_list 中找到的其他值包括:iduid(例如 facebook 用户 ID)、user、extra_data(包含 access_token

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 1970-01-01
      • 2014-05-13
      • 2015-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-23
      • 2022-06-20
      相关资源
      最近更新 更多