0

所以我有一个推荐网址,http://.../ref/4Q3j9/当点击它时会将他们带到一个注册页面。他们可以使用谷歌帐户 [Oauth2] 进行注册。我将它们作为隐藏变量存储在模板中。但是当用户点击谷歌登录时,我会丢失这些值。无论如何我可以传递这些参数,然后在 social_auth 中的重定向上再次返回。我想过使用管道,但那只是在登录过程之后,到那时我失去了那些参数。

4

2 回答 2

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]
于 2014-11-04T02:22:31.837 回答
0

这有点棘手,存储在会话中是不够的,因为 django 在用户登录时清除会话。当用户被发送到您的注册页面时,您可以将其存储在会话中,但是您需要一个管道条目之类的东西user.referral = request.session['referral'],然后使用中间件将其存储回会话中,该中间件request.user.referral在 django-social-auth 完成的重定向发送给用户之前进行检查(当身份验证完成并且用户登录时)。

您可以尝试定义GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMNTS = {'referral': None}并确保已?referral=foobar添加 Google OAuth2 链接。但这只会避免推荐的第一个会话存储,您将需要管道(但这次检查request.GET['referral']而不是会话)条目和中间件,而且我不确定 Google 是否会在身份验证完成后返回推荐。

于 2013-01-06T16:38:56.490 回答