使用django_facebook从Facebook获取有关用户的信息

时间:2014-08-18 10:19:29

标签: python django django-allauth django-facebook

首先,如果这是一个重新发布,我想向社区道歉。 我正在搜索stackoverflow,这可能对我有所帮助,但我的搜索没有成功。所以这就是我的问题。

也许这是我缺乏技能,但我个人无法通过django_facebook文档找到解决方法。我经历了整个事情,尽管我认为所有的部分都得到了很好的解释,但是对我而言,创造大局是非常困难的......

我设法将django_facebook与Facebook上的应用程序连接甚至登录,但我不能做的是提取有关登录用户的信息。我的目标是允许用户在我的网站上登录/注册Facebook ,并从Facebook提取他们的基本信息,以便我可以在我的网站上建议他们的个人资料。

如果您能解释整个登录/注册并彻底了解用户流程的信息,我将非常感激。

P.S。有人向我建议django_allauth。我应该切换到那个吗?如果是的话,djang_facebook和django_allauth的优点和缺点是什么? p.p.s.另外,我无法找到任何适合django_facebook和django_allauth的教程。如果您有,请给我们链接:)

2 个答案:

答案 0 :(得分:1)

django-facebook的快速概述建议我将信息保存在

BaseFacebookModel

所以有一个名为post_connect的信号。您可以使用它从上面的模型中获取信息,并根据需要将其保存到您的个人资料中。

同样在django-allauth,它可以轻松完成。我是为了获取出生日期而做的。 有一个名为SocialAccount的模型存储用户的公共信息。额外的数据以json的形式存储。在allauth对用户进行身份验证后,您可以简单地使用该数据并在UserProfile中使用它。

如果有帮助,请告诉我。

答案 1 :(得分:1)

Here是一个教程,解释了如何使用all_auth进行社交身份验证。 您可以使用view中的以下代码段直接访问allauth对象中的数据:

首先,使用以下方式从帐户获取信息:

account_uid = SocialAccount.objects.filter(user_id=request.user.id, provider='facebook')

然后,使用下面给出的成员属性,您可以获得已公开的参数。

account_uid[0].get_avatar_url()
account_uid[0].extra_data['username']
account_uid[0].extra_data['first_name']
account_uid[0].extra_data['last_name']
account_uid[0].extra_data['gender']
account_uid[0].extra_data['email']
account_uid[0].extra_data['link']
account_uid[0].extra_data['uid']