对于我的第一个Django项目,我想使用Python Social Auth进行社交身份验证(即Facebook)。
Django == 2.0
social-auth-app-django == 2.1.0
social-auth-core == 1.7.0
如何从登录的用户个人资料中检索其他数据?我的目标是根据登录用户所属的FB组将其过滤到自定义组。但是,在这一点上,我什至都收不到电子邮件,只是用户名。
在我的settings.py中:
SOCIAL_AUTH_FACEBOOK_KEY = 'xxxx'
SOCIAL_AUTH_FACEBOOK_SECRET = 'xxxx'
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email', 'groups_access_member_info']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
'fields': 'id, name, email',
'edges': 'groups'
}
管道是基本的指导原则:
SOCIAL_AUTH_PIPELINE = (
'social_core.pipeline.social_auth.social_details',
'social_core.pipeline.social_auth.social_uid',
'social_core.pipeline.social_auth.auth_allowed',
'social_core.pipeline.social_auth.social_user',
'social_core.pipeline.user.get_username',
'social_core.pipeline.user.create_user',
'social_core.pipeline.social_auth.associate_user',
'social_core.pipeline.social_auth.load_extra_data',
'social_core.pipeline.user.user_details',
)
我并不需要完整的代码,将不胜感激。
提前谢谢!
答案 0 :(得分:2)
python-social-auth
只会存储填充模型字段所需的基本用户信息,如果提供程序的auth有效负载中包含其他任何内容,并且已在EXTRA_DATA
设置中进行了配置,也可以作为extra_data
属性的一部分存储在与社会相关的类中。
不过,python-social-auth
不会调用提供程序中的任何其他API来获取其他数据,为了正常工作,您需要使用将在以下位置调用这些其他端点的方法来增强PIPELINE
: Facebook,一旦收到响应,您就可以存储它,使其适合您的项目。
要调试提供程序默认提供的功能,请在步骤(debug
)之间添加social_core.pipeline.debug.debug
管道。如果您要查找的内容已经是有效负载的一部分,请记下密钥名称并将其添加到EXTRA_DATA
设置中。如果不是,那么您需要添加一个方法,该方法将调用Facebook API来检索额外的信息。