Python 使用 Django 进行社交验证 - 如何检索额外数据?

Python Social Auth with Django - how to retrieve extra data?

对于我的第一个 Django 项目,我想绑定 Python Social Auth 用于社交身份验证(即 Facebook)。
Django==2.0
社交认证应用程序 django==2.1.0
社交认证核心==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',
)

我不要求完整的代码,任何帮助将不胜感激。

提前致谢!

python-social-auth 将只存储填充模型字段所需的基本用户信息,如果有任何额外内容是来自提供商的身份验证有效负载的一部分,并且它在 EXTRA_DATA 设置中配置,它还将作为 extra_data 属性的一部分存储在与社交相关的 class 中。

仍然,python-social-auth 不会调用提供程序中的任何其他 API 来获取额外的数据,为此,您需要使用您的方法增强 PIPELINE将在 Facebook 上调用这些额外的端点,一旦有了响应,您就可以将其存储在适合您的项目的情况下。

要调试提供程序默认提供的内容,请在步骤 (social_core.pipeline.debug.debug) 之间添加 debug 管道。如果您要查找的内容已经是有效负载的一部分,请记下密钥名称并将其添加到 EXTRA_DATA 设置中。如果不是,那么您需要添加一个方法来调用 Facebook API 来检索额外信息。