【问题标题】:Facebook Connect: capturing user data with django-profiles and django-socialregistrationFacebook Connect:使用 django-profiles 和 django-socialregistration 捕获用户数据
【发布时间】:2011-04-27 18:14:09
【问题描述】:

要么我的谷歌搜索完全离开了我,要么几乎没有任何关于 django-socialregistration 的文档/教程。太糟糕了,因为它看起来是一个足够好的应用程序。通过一些试验和错误,我设法让它主要在我的网站上运行。

我的问题,使用 django-socialregistration 如何请求 facebook 用户的全名、当前城市和出生日期的权限并将其存储在我的 UserProfile 表中(这是我的 AUTH_PROFILE_MODULE for django-个人资料)在 Django 中注册?另外,一旦建立连接,我如何从 Django 发布到用户的墙上?

目前,当我单击“与 Facebook 连接”按钮时,会建立 facebook 连接,创建一个新的 Django 用户,并且该用户使用该 Django 帐户登录。但是,没有创建 UserProfile,也没有保存 facebook 个人资料数据。

任何 facebook 连接专家都想帮助 Django 小马飞到 Facebookland?

设置:
- Django 1.2.1
- Python 2.5.2
- django-socialregistration 0.4.2
- django 注册 0.7
- django-profiles 0.2


“好心的先生,你能帮我找到神奇的 Facebookland 吗?”

【问题讨论】:

    标签: django facebook registration user-profile


    【解决方案1】:

    在 facebook_js.html 中,您需要通过取消注释您需要从 FB 获取的项目来调整以下行:

         FB.login(handleResponse/*,{perms:'publish_stream,sms,offline_access,email,read_stream,status_update,etc'}*/);
    

    然后,在 FacebookMiddleware 中,您可以从 fb_user 中提取该数据,如下所示:

         facebook.GraphAPI(fb_user['access_token']).get_object('me')
    

    【讨论】:

    • 你让 Django 小马开心。很开心。
    • 为了澄清您的第二点,FacebookMiddleware 将 facebook 用户数据添加到请求中,因此您可以像这样获取用户的个人资料信息:fbuser = request.facebook.graph.get_object("me") .然后你可以得到数据,比如用户的名字:fbuser['first_name'],性别:fbuser['gender'] 或城市/州:fbuser['location']['name']
    • 从 Django 发帖到 Facebook:request.facebook.graph.put_object("me", "feed", message="A post from Django!")
    • @mitchf:就像你说的。我不确定哪个代码是原始的,哪个是我写的,所以我没有提到这些细节
    • 找到一点关于如何实现socialregistration的信息感觉真好:我现在的问题是:如何实现用户信息页面:stackoverflow.com/questions/3978829/…
    【解决方案2】:

    FWIW,我刚刚在 github 的“问题”部分中发现了来自应用作者的这个很有帮助的块:

    来自“tolano”的问题:

    我有一个与用户关联的配置文件模型,并且每次创建用户时也应该创建配置文件。我们是否应该为此创建一个新的自定义设置视图?

    我发现了几个问题,因为文档很差。非常感谢。

    来自“闪烁南瓜”的回答:

    是的。理想情况下,您将用自己的覆盖设置视图。调整用户创建操作的更简单方法是将自定义表单传递到设置视图中。您将通过覆盖标准 url 来做到这一点。

    【讨论】:

      【解决方案3】:

      这是另一个相关的块(来源:http://github.com/flashingpumpkin/django-socialregistration/issues/closed#issue/7)这些足够了,这个页面将成为事实上的 django-socialregistration 文档;)

      来自“girasquid”的问题:

      也许我只是遗漏了一些东西,但我被困在这里 - 有没有办法将其他网站上的帐户“连接”到已经存在的用户?

      例如,我已经注册了真的很棒的网站,所以我不需要再次注册 - 但我想关联我的 Facebook 和 Twitter 帐户,以便我也可以使用这些帐户登录.

      有没有办法做到这一点?如果没有……我该怎么办?

      来自“闪烁南瓜”的回答:

      是的,有。只需为 Facebook Connect 使用与注册相同的模板标签。根据用户是否已经登录,它将仅创建 FacebookProfile 对象并将其链接到现有用户 - 或同时创建用户对象和 FacebookProfile 对象。

      看看这里:
      http://github.com/flashingpumpkin/django-socialregistration/blob/master/socialregistration/templates/socialregistration/facebook_button.html

      http://github.com/flashingpumpkin/django-socialregistration/blob/master/socialregistration/templatetags/facebook_tags.py

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 2013-06-06
        • 2011-07-16
        相关资源
        最近更新 更多