我正在尝试将OpenID与AppEngine一起使用,并且我已经设置了一个简单的/_ah/login
页面,可以通过Google登录。
但是当我使用users.create_login_url(dest_url='/some/page?foo=bar&fizz=buzz')
时,它会返回:
https://myapp.appspot.com/_ah/login_redir?claimid=https://www.google.com/accounts/o8/id&continue=https://myapp.appspot.com/some/page?foo=bar&fizz=buzz
当我最终被重定向到dest_url
时,第二个参数(fizz=buzz
)丢失了。
这是create_login_url()
上的错误/限制吗?
答案 0 :(得分:1)
是。这是联合登录中的错误。在此报告:https://code.google.com/p/googleappengine/issues/detail?id=3249
解决方法:两次逃离&符号
& -> %26 -> %2526
url ='/some/page?foo=bar&fizz=buzz'
import urllib
url = urllib.quote(urllib.quote(url_re))
users.create_login_url(dest_url=url)
或将&
替换为%2526
。