将 python-social-auth 从 0.1.17 升级到 0.2.4 时,请求中未提供会话属性,以自定义管道方法?

On upgrading python-social-auth from 0.1.17 to 0.2.4, session attribute is not provided in request, to custom pipeline method?

我的社交认证管道如下:

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',
'social.pipeline.user.user_details',
'useraccounts.models.create_user_profile'
)

当 'useraccounts.models.create_user_profile' 执行以下操作时:

request = kwargs.get('request')
do_something(session_key=request.session.session_key)

出现以下错误:

'QueryDict' object has no attribute 'session'

'Request' 字典包含具有以下键的元素:state、code、prompt、session_state、authuser

我使用的是 Django 版本 1.5.5。问题来了,因为我已经将 python-social-auth 从 v0.1.17 升级到 v0.2.4

这可能是因为 user_details 函数没有将任何内容传递给管道中的下一个函数。根据您的要求,您可能需要更改管道中函数的顺序:

检查这个: https://github.com/omab/python-social-auth/blob/master/social/pipeline/user.py#L75

https://github.com/omab/python-social-auth/issues/978

尝试使用

strategy.request

访问 django 请求。