Facebook Connect:使用django-profiles和django-socialregistration捕获用户数据

7
我的谷歌搜索可能不够好,或者确实没有关于django-socialregistration的文档/教程。很遗憾,因为它看起来是一个不错的应用程序。通过一些试验和错误,我已经在我的网站上成功运行了它。
我的问题是,使用django-socialregistration,我如何请求Facebook用户的全名、当前城市和出生日期,并在Django注册时将其存储在我的UserProfile表中(这是我的django-profiles的AUTH_PROFILE_MODULE)?此外,一旦建立连接,我如何从Django发布到用户的墙上?
目前,当我点击“连接到Facebook”按钮时,会建立Facebook连接,创建一个新的Django用户,并使用该Django帐户登录用户。然而,没有创建UserProfile,也没有保存Facebook配置文件数据。
有没有粉丝连接Facebook愿意帮助Django矮马飞到Facebookland?
设置: - Django 1.2.1 - Python 2.5.2 - django-socialregistration 0.4.2 - django-registration 0.7 - django-profiles 0.2
3个回答

8
在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小马非常开心。非常非常开心。 - mitchf
1
为了澄清你的第二点,FacebookMiddleware将Facebook用户数据添加到请求中,因此您可以像这样获取用户的个人资料信息:fbuser = request.facebook.graph.get_object("me")。然后,您可以获取用户的名字:fbuser['first_name'],性别:fbuser['gender']或城市/州:fbuser['location']['name']等数据。 - mitchf
在Django中发布到Facebook:request.facebook.graph.put_object("me", "feed", message="来自Django的帖子!") - mitchf
@mitchf:就像你所说的那样。我不确定哪些代码是原始的,哪些是我写的,所以我没有提到这些细节。 - Tomasz Zieliński
找到一点关于如何实现社交注册的信息感觉很好:我的问题现在是:如何实现用户信息页面:http://stackoverflow.com/questions/3978829/socialregistration-how-to-make-a-user-info-page-that-works-for-both-facebook-and - Mermoz

3

对于此问题,我从应用程序作者在Github的“问题”部分中找到了一个有用的提示:

来自 "tolano" 的问题:

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

因为文档不好,我发现有几个问题。非常感谢。

来自 "flashingpumpkin" 的答复:

是的。理想情况下,您将使用自己的设置视图来覆盖它。一种更简单的方法是将自定义表单传递到设置视图中以调整在创建用户时执行的操作。您需要通过覆盖标准URL来执行此操作。


1

这里有另一个相关的信息(来源:http://github.com/flashingpumpkin/django-socialregistration/issues/closed#issue/7)。如果有足够多的这些信息,这个页面将成为事实上的django-socialregistration文档;)

"girasquid"的问题:

也许我只是错过了什么,但我卡在这里了 - 有没有办法将其他网站上的帐户与已经存在的用户“连接”起来?

例如,我已经在真正棒的网站上注册了,所以我不需要再次注册 - 但我想连接我的Facebook和Twitter帐户,这样我也可以使用它们进行登录。

已经有这样的方法了吗?如果没有...我该怎么做?

"flashingpumpkin"的回答:

有的。只需像注册一样使用Facebook Connect的相同模板标签即可。根据用户是否已经登录,它将创建FacebookProfile对象并将其链接到现有用户 - 或同时创建User对象和FacebookProfile对象。
请看这里: http://github.com/flashingpumpkin/django-socialregistration/blob/master/socialregistration/templates/socialregistration/facebook_button.htmlhttp://github.com/flashingpumpkin/django-socialregistration/blob/master/socialregistration/templatetags/facebook_tags.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接