使用tornado和TwitterMixin丢失OAuth请求令牌cookie错误

时间:2011-07-21 10:22:01

标签: python cookies twitter oauth tornado

我正在使用龙卷风和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回调配置。 我查看了龙卷风代码,我不明白为什么会出现这个错误 出现。

3 个答案:

答案 0 :(得分:1)

可能发生这种情况的两个原因:

  1. 有些用户可能会关闭Cookie,在这种情况下,这将无效。
  2. Cookie未经过身份验证。设置oauth_token参数可能是有效的,但cookie不是。不知道为什么会发生这种情况,你必须记录一些日志记录以了解原因。
  3. 无论如何,这不是“错误”,而是用户未经过身份验证的标志。也许如果你发现你应该将它们重定向到授权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