我的django应用程序正在使用Python Social Auth向Fb / G + / Twitter注册新用户,但我也希望用户能够将他们现有的帐户关联到Facebook / Google + / Twitter。 问题是每当我将新帐户连接到现有帐户时使用标准管道,它会将现有帐户的所有信息更改为我正在关联的社交帐户上的信息。 例如。: 如果我在我的网站上有一个帐户,电子邮件地址为abc@gmail.com,但我正在关联的Facebook帐户上的电子邮件是123@gmail.com,则会更改为该帐户。 我尝试从管道中删除'social.pipeline.user.user_details',但是当我创建新用户时,它不会将信息从Facebook提取到帐户,这是我想要的。
(如何)我能解决这个问题吗?
谢谢!
答案 0 :(得分:1)
我最后做的是为管道创建一个新功能,调用默认情况下在时间轴中的现有populate_info
,但前提是它是一个新帐户(由&#39确定) ; is_new' in kwargs):
from social.pipeline.user import user_details
def populate_info(strategy, details, user=None, *args, **kwargs):
if (kwargs['is_new']):
user_details(strategy, details, user, args, kwargs)
在settings.py上:
SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'social.pipeline.social_auth.associate_by_email',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'myapp.auth_pipeline.populate_info',
)