我正在使用龙卷风和TwitterMixin,我使用以下基本代码:
class OauthTwitterHandler(BaseHandler, tornado.auth.TwitterMixin):
@tornado.web.asynchronous
def get(self):
if self.get_argument("oauth_token", None):
self.get_authenticated_user(self.async_callback(self._on_auth))
return
self.authorize_redirect()
def _on_auth(self, user):
if not user:
raise tornado.web.HTTPError(500, "Twitter auth failed")
self.write(user)
self.finish()
对我而言,它的效果非常好,但有时,我的应用程序的用户会收到500错误,其中包含: 缺少OAuth请求令牌cookie
我不知道它是来自浏览器还是twitter api回调配置。 我查看了龙卷风代码,我不明白为什么会出现这个错误 出现。
答案 0 :(得分:1)
可能发生这种情况的两个原因:
oauth_token
参数可能是有效的,但cookie不是。不知道为什么会发生这种情况,你必须记录一些日志记录以了解原因。无论如何,这不是“错误”,而是用户未经过身份验证的标志。也许如果你发现你应该将它们重定向到授权URL并让他们再试一次。
答案 1 :(得分:1)
我找到了解决方案!!
这是由于我的DNS。
我没有将重定向放在www.mydomain.com和mydomain.com上,所以有时候cookie是在www中设置的。有时不然后我的服务器没有检查好的地方,没找到cookie然后发给我500错误。
答案 2 :(得分:0)
发生这种情况的原因是Callback URL配置指向不同的域。
在https://dev.twitter.com/apps/查看应用程序的设置标签,或者如果收到错误的用户正在从其他域访问您的网站。
请参阅:http://groups.google.com/group/python-tornado/browse_thread/thread/55aa42eef42fa1ac