0

アプリに Twitter ログインを統合しようとしています。このコードを書きました。

class AuthTwitterHandler(tornado.web.RequestHandler, tornado.auth.TwitterMixin):
    @tornado.web.asynchronous
    def get(self):
        print 'GET'
        if self.get_argument("oauth_token", None):
            print 'GET OK'
            self.get_authenticated_user(self.async_callback(self._on_auth))
            return
        print 'REDIRECT'
        self.authenticate_redirect()

    @tornado.web.asynchronous
    def _on_auth(self, user):
        print 'ONAUTH'
        if not user:
            print 'Broken'
            raise tornado.web.HTTPError(500, "Twitter auth failed")
            # Save the user using, e.g., set_secure_cookie()
        print 'not Broken'
        self.set_secure_cookie("user", tornado.escape.json_encode(user))

私のTwitterアプリのcallback_urlとして、このハンドラーの同じアドレスを入力すると、出力は次のようになります。

GET
REDIRECT
GET
GET OK
ONAUTH
Broken

そして私のログは言った:

2012-06-18 16:56:09,650 - root - INFO - Logging started
2012-06-18 16:56:09,821 - root - INFO - Server starting on port 443
2012-06-18 16:56:16,170 - root - INFO - 304 GET /auth (127.0.0.1) 0.72ms
2012-06-18 16:56:19,215 - root - INFO - 302 POST /auth (127.0.0.1) 1.35ms
2012-06-18 16:56:19,719 - root - INFO - 302 GET /auth/twitter (127.0.0.1) 429.17ms
2012-06-18 16:56:20,464 - root - WARNING - Missing OAuth request token cookie
2012-06-18 16:56:20,465 - root - WARNING - 500 GET /auth/twitter?oauth_token=Nbed9YQseoNC3YjdFkbOPS5An7OhfewcEgp3oPuq4&oauth_verifier=uGWWoItQ7SXa1Bt8lSDs1N8iVXvBFIcKtCEpZ1mmI4 (127.0.0.1): Twitter auth failed
2012-06-18 16:56:20,465 - root - ERROR - 500 GET /auth/twitter?oauth_token=Nbed9YQseoNC3YjdFkbOPS5An7OhfewcEgp3oPuq4&oauth_verifier=uGWWoItQ7SXa1Bt8lSDs1N8iVXvBFIcKtCEpZ1mmI4 (127.0.0.1) 12.96ms

誰でも私を助けることができますか?

4

1 に答える 1

0

これは、「Tornado と TwitterMixin を使用した OAuth リクエスト トークン Cookie エラーの欠落」 のだまされている可能性があるため、3 つの質問があります。

  1. あなたのウェブサイトの完全修飾ドメイン名は何ですか?
  2. HTTPFox のような Web ブラウザ プラグインを使用する場合、または Wireshark を使用する場合、返される正確な Cookie は何ですか? より正確には、Cookie が関連付けられているドメインは?
  3. Twitter アプリのコールバック URL の完全な URL は?

これは Tornado のエラーではありません。私はまったく同じコードを使用して成功しました。そのため、Twitter アプリの設定、サイトがホストされている場所、返される正確な Cookie に注目する価値があります。

于 2012-06-18T15:53:13.467 に答える