我设法安装了 django-social-auth,但我错过了我可以实际使用从 facebook 获得的数据来创建用户名并可能使用个人资料图片或关于字段的时刻......
我知道在 django-social-auth 的设置中我可以设置 SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user' 和 FACEBOOK_EXTENDED_PERMISSIONS = [...] 但我不知道在我的代码中我可以在哪里插入这些数据,所以不拥有随机用户名。
最佳答案
django-social-auth
实现了一个管道(这似乎是一个新功能,因为当我尝试它时它不存在)允许您在某些步骤中插入自定义函数认证的过程。查看the docs here , 和一个 example 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)
关于使用 facebook 数据的 django 社交身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351922/