django social auth使用facebook数据

时间:2012-02-19 18:31:25

标签: django facebook authentication social

我设法安装了django-social-auth,但我错过了我可以实际使用从facebook获取的数据以创建用户名并可能使用个人资料图片或关于字段的时刻......

我知道在django-social-auth的设置中我可以设置SOCIAL_AUTH_DEFAULT_USERNAME ='new_social_auth_user'和FACEBOOK_EXTENDED_PERMISSIONS = [...]但是我不会在我的代码中取消插入我可以插入此数据的位置,所以不能有随机的用户名。

1 个答案:

答案 0 :(得分:13)

django-social-auth实现了一个管道(这似乎是一个新功能,因为它在我尝试时不存在),允许您在身份验证过程中的某些步骤插入自定义函数。在此处查看the docs hereexample pipline function

所以你可以编写一个函数:

SOCIAL_AUTH_PIPELINE = (
    'social_auth.backends.pipeline.social.social_auth_user',
    'social_auth.backends.pipeline.associate.associate_by_email',
    'social_auth.backends.pipeline.user.get_username',

    'app.pipeline.custom_create_user',

    'social_auth.backends.pipeline.social.associate_user',
    'social_auth.backends.pipeline.social.load_extra_data',
    'social_auth.backends.pipeline.user.update_user_details'
)

您的custom_create_user函数包装默认create_user并根据您自己的需要创建用户名:

from social_auth.backends.pipeline.user import create_user
def custom_create_user(request, *args, **kwargs):
     user = *kwargs.get('user', None)
     # Do something with username
     return create_user(request, args, kwargs)