html appengine重定向网址

时间:2011-03-26 18:13:08

标签: python html google-app-engine url redirect

我想在第三方网页上进行身份验证后将用户重定向到下一个网址。在重定向URL中,我希望它包含有关用户的一些信息,即会话ID。例如,当用户返回我的页面时,我的重定向URL将为www.z.appspot.com/?session=x/我想从新网址中解析他们的一些详细信息,例如www.z.appspot.com/?access_code=x/?token=y&user_id=u,但在尝试解析信息时,它无法查看URL中的令牌,因为它将其作为会话的一部分。我尝试使用&,但仍然没有快乐

3 个答案:

答案 0 :(得分:1)

您需要一个名为cgi的模块和一个名为FieldStorage的函数。这样做:

import cgi

url_parms = cgi.FieldStorage()
session = url_parms.getvalue("session","default")

您可以为任何网址参数执行此操作。将“default”替换为您想要的默认值(如空字符串)。

答案 1 :(得分:1)

您的问题有点令人困惑,但是您的其他服务无法重定向到www.z.appspot.com/?access_code=x/&token=y&user_id=u吗?应该正确解析:

import urlparse
import cgi

url = "www.z.appspot.com/?access_code=x/&token=y&user_id=u"
query = urlparse.urlparse(url).query
print cgi.parse_qs(query)
# output: {'access_code': ['x/'], 'token': ['y'], 'user_id': ['u']}

如果您无法更改网址格式,可以执行以下操作:

import urlparse
import cgi

url = "www.z.appspot.com/?access_code=x/?token=y&user_id=u"
query = urlparse.urlparse(url).query
access_code, query = query.split('?', 1)
access_code = access_code.split('=', 1)[1]
print access_code
# output: 'x/'
print cgi.parse_qs(query)
# output: {'token': ['y'], 'user_id': ['u']}

或者,如果您只是想询问如何在URL中嵌入参数,将其重定向到,请参阅Python的urlencode

<强>更新

import urllib
encoded = urllib.urlencode({'app_id': 11,
                            'next': 'http://localhost:8086/?access_tok­en=%s' % (access_token,)})
hunch_url = 'http://hunch.com/authorize/v1/?%s' % (encoded,)

然后将hunch_url传递给您的模板。

答案 2 :(得分:0)

您正在重定向的服务看起来不会正确地在继续URL中组成查询参数。最简单的方法是(正如我在你的原始问题中所建议的那样)将参数作为路径的一部分发送,而不是查询字符串 - 也就是说,使用以下形式的URL:

http://www.yourapp.com/continue/1234

其中1234是用户的会话ID或用户ID。