【问题标题】:How can I use social-auth on my templates?如何在我的模板上使用 social-auth?
【发布时间】:2013-10-07 09:46:13
【问题描述】:

我已经设置了社交身份验证来使用 Facebook,我现在可以登录,但是如何将用户数据携带到模板中?如何使用模板上的用户数据,例如:

头像在这里 {{ 用户城市 }}

谢谢!

【问题讨论】:

  • 你能出示你的代码吗?
  • 当然,但是是哪一个文件?因为,它只是一个没有修改的社交认证实现,我只是安装了它,没有做任何更改。我现在可以使用 facebook 登录:dpaste.de/RRtZ
  • 登录成功后会进入一个空白页面,我希望在其中有类似 {{ social_auth.user }}、{{ social.avatar }}、{{ social_auth.image }} 之类的东西像那样(我不确定如何捕获用户数据)

标签: python django django-socialauth


【解决方案1】:

有几种方法可以实现这一点,但一旦安装了 social_auth,用户就会与social_auth 提供的UserSocialAuth 模型建立关系。您必须阅读documentation 如何使用Facebook graph。您可以通过Facebook dialog 请求权限。

一种方式:

{{ user.social_auth.all.0 }}  # et cetera

使用模板标签和开放图的更好方法

<img src="{{ user|social_auth:'avatar' }}" />

@register.filter
def social_auth(user, arg):
    try:
        social_user = UserSocialAuth.objects.get(user=user)
    except UserSocialAuth.DoesNotExist:
        social_user = None
    if social_user and arg == "avatar":
        return "http://graph.facebook.com/"+social_user.uid+"/picture"

【讨论】:

  • 这个看起来很不错,但是我怎么能用在用户生日上呢。我使用这个:FACEBOOK_EXTENDED_PERMISSIONS = ['email', 'read_friendlists', 'read_stream', 'publish_actions', 'publish_stream', 'user_location', 'user_about_me' ],但是我怎样才能在我的模板上找到它呢?像 {{ user.social_auth.USER_ABOUT_ME }} 或类似的东西?提前谢谢你
  • 这些可以通过社交身份验证管道收集并插入到SocialAuthUser 模型(json)上的extra_data 字段中
猜你喜欢
  • 2011-12-15
  • 2017-03-19
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2013-02-19
相关资源
最近更新 更多