所以我有一个引荐网址,类似http://.../ref/4Q3j9/
,点击后会将它们带到注册页面。他们可以使用谷歌帐户[Oauth2]注册。我将它们作为隐藏变量存储在模板中。但是,当用户点击Google登录时,我会丢失这些值。无论如何,我可以传递这些参数,然后再次返回social_auth中的重定向。我想过使用管道,但只有在登录过程之后才会这样,那时我就失去了这些参数。
答案 0 :(得分:0)
这有点棘手,在会话中存储它是不够的,因为当用户登录时django会清除会话。当用户被发送到你的注册页面时你可以将它存储在会话中,但是你需要一个管道执行类似user.referral = request.session['referral']
之类的条目,然后使用中间件将其存储回会话,该中间件在django-social-auth完成重定向之前检查request.user.referral
(当auth完成时)并且用户已登录。)
您可以尝试定义GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMNTS = {'referral': None}
并确保Google OAuth2链接添加了?referral=foobar
。但这只会避免第一次会话存储引用,你需要管道(但这次检查request.GET['referral']
而不是会话)条目和中间件,我不确定谷歌会返回推荐当auth完成时。
答案 1 :(得分:0)
一个老问题,但由于没有答案......我使用cookies做了这个,在视图函数中设置了一个cookie
response.set_cookie( cookie_name, my_needed_value, max_age=3600)
或在
的网页中document.cookie = 'cookie_name=my_needed_value; expires=Tue, 05 Nov 2014 00:00:00 UTC; path=/'
(设置明确过期,或删除过去的日期),然后在视图中阅读
if request.COOKIES.has_key(cookie_name):
my_needed_value = request.COOKIES[cookie_name]