使用带有AppEngine的联合登录时重定向URL的问题

时间:2013-08-13 11:15:36

标签: python google-app-engine openid

我正在尝试将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()上的错误/限制吗?

1 个答案:

答案 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