Django Google OpenID/联合登录定期失败

Django Google OpenID/联合登录定期失败,django,openid,Django,Openid,我正在开发一个使用python openid的Django应用程序。该应用程序正在我家的开发服务器上运行 与stackoverflow的登录机制类似,我希望用户使用他们的Google凭据登录我的网站 我为实现这一点而实现的代码可以正常工作几周,然后停止工作。在登录过程中,我在下面的谷歌页面上遇到了一个问题:“你请求的页面无效。”它会随机重新开始工作,但每隔几周左右就会失败 通过雅虎的登录工作了几个月,今天已经停止使用以下消息:“此页面已过期,请返回原始页面并重试”在该页面上: 以下是LiveHt

我正在开发一个使用python openid的Django应用程序。该应用程序正在我家的开发服务器上运行

与stackoverflow的登录机制类似,我希望用户使用他们的Google凭据登录我的网站

我为实现这一点而实现的代码可以正常工作几周,然后停止工作。在登录过程中,我在下面的谷歌页面上遇到了一个问题:“你请求的页面无效。”它会随机重新开始工作,但每隔几周左右就会失败

通过雅虎的登录工作了几个月,今天已经停止使用以下消息:“此页面已过期,请返回原始页面并重试”在该页面上:

以下是LiveHttpHeaders for Google捕获的请求:

https://www.google.com/accounts/o8/ud

POST /accounts/o8/ud HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8    
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1:8000/users/login/
Content-Length:907
openid.ax.if_available=ext1&openid.mode=checkid_setup&openid.ns=http://specs.openid.net/auth/2.0&openid.realm=http://127.0.0.1:8000/accounts/login/&openid.return_to=http://127.0.0.1:8000/users/login/finish/?janrain_nonce=2009-10-05T19%3A10%3A11ZtioiRm&openid.ax.count.ext1=unlimited&openid.ax.mode=fetch_request&openid.sreg.optional=email&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&openid.ns.sreg=http://openid.net/extensions/sreg/1.1&openid.ns.ax=http://openid.net/srv/ax/1.0&openid.identity=http://specs.openid.net/auth/2.0/identifier_select&openid.assoc_handle=AOQobUcnzec0bpeZRztjqPrr5TQUA0aPL7SIuOPOMgWxex2HRAP09AyJ&openid.ax.required=ext0&openid.ax.type.ext0=http://schema.openid.net/namePerson&openid.ax.type.ext1=http://schema.openid.net/contact/web/default

HTTP/1.x 400 Bad Request
Cache-Control: no-cache, no-store, max-age=0, must-revalidate

我不确定这里发生了什么,希望能得到一些帮助

您使用的代码似乎正在生成错误的URL请求。真正的URL是,所以请尝试在结尾处修复“ud”,通过“id”更改它


希望这有帮助

您可以构造uri并使用GET方法将用户重定向到uri。如果你在写博文,谷歌希望看到一些标题,我想这是没有提到的。检查请求。我尝试了使用GET而不使用python openid,它运行得非常好。

您可以查看
重定向uri
内部状态
,看看它们是否匹配。我记得在谷歌登录时,有时会出现“状态不匹配”的问题


BTW,如果你使用Django,我建议使用当前活动的并且支持多个社交登录选项(如果在某些时候你考虑添加更多的社交登录提供者)。一遍又一遍地呆了一天左右?在什么情况下它又开始工作了?我有一个和你一样的问题。但有些情况更糟!我对用户登录没有问题,但每隔一天,谷歌提供的身份字符串应该会发生唯一的变化!因此,用户不能再使用他们在我的网站上的帐户登录。我不知道会发生什么。