2011-10-17 9 views
0

Twitterアプリをセットアップして、自分のアプリ内のツイートに返信できるようにしました。私はコールバックURLを持っています。私が試してそれを上書きしないときは、すべてうまくいくようです。しかし、私は現在のURLへのコールバックをオーバーライドしたいと思っています。これは、アプリケーションが複数のサブドメインとサーバー上で動作するようにコールバックのオーバーライドを取得する問題です。Twitter Oauthコールバックオーバーライドが失敗する

私がコールバックをオーバーライドして、Twitterユーザーがそのページに戻ってきたら、「申し訳ありません、そのページは存在しません!」というメッセージが表示されます。

とURLこの

https://twitter.com/oauth/http%3A//127.0.0.1/authtwitter%3FtwitterCallback?oauth_token=VALUE&oauth_verifier=VALUE

とここに私のPythonコードはOAuthのた​​めに、このライブラリを使用しているようなものになります:ユーザーのためのhttps://github.com/simplegeo/python-oauth2

#SETUP TWITTER AUTHORIZATION OBJECT 
    request_token_url = 'http://twitter.com/oauth/request_token' 
    access_token_url = 'http://twitter.com/oauth/access_token' 
    authorize_url = 'http://twitter.com/oauth/authenticate' 

    consumer = oauth.Consumer(consumer_key, consumer_secret) 
    client = oauth.Client(consumer) 

    #get request token 
    callbackURL = urllib.quote("%s?twitterCallback" % self.request.url) 

    resp, content = client.request(request_token_url, "POST", body=urllib.urlencode({'oauth_callback':callbackURL})) 
    if resp['status'] != '200': 
      raise Exception("Invalid Response %s." %resp['status']) 

    request_token = dict(urlparse.parse_qsl(content)) 

    tmpldict['callbackURL'] = callbackURL 
    tmpldict['oauth_token'] = request_token['oauth_token'] 
    tmpldict['twitauthurl'] = "%s?oauth_token=%s" % (authorize_url, request_token['oauth_token'])        

    qargs=urlparse_qs(self.request.url,True,False) 

    if 'oauth_verifier' in qargs: 
      oauth_verifier = qargs['oauth_verifier'][0] 
    else: 
      oauth_verifier = None 

    if oauth_verifier: 
      token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret']) 
      token.set_verifier(oauth_verifier) 

      client = oauth.Client(consumer,token) 

      resp, content = client.request(access_token_url, "GET") 
      access_token = dict(urlparse.parse_qsl(content)) 

現在のフロー

クリックを承認URL

上記の例のようなURLでページを検索することはできませんバックアプリケーション

へリダイレクトしています:3210

は、Twitterの

Twitterの表示上のアクセスを許可ヒット。

+0

TwitterでコールバックURLを上書きすることはできません。つまり、あなたは404を取得すべきではありません。これは許可が行われた後に起こっていますか? – muffinista

+0

彼らはそれについてhttp://milindshakya.tumblr.com/post/4208580364/overriding-twitters-default-callback-url-using-oauthがTwitterの従業員と話したが、スレッドは古くなった。リクエストでPOSTを使用するとうまくいくはずです。 – BillPull

答えて

3

いくつかの簡単なもの...

あなたのURLが古いと時代遅れであり、適切なURLと同様に機能しません。それはあなたが、ヘッダーベースのOAuthまたはクエリ文字列ベースのOAuthを実行しているかどうか、このコードを見て、私には不明だ

:SSLおよびAPIのサブドメインを使用します。ヘッダーベースのOAuthをお勧めします。これは懸念を劇的に切り離し、発生時に誤ったことを発見しやすくします。

動的なoauth_callback値をoauth/request_tokenステップに送信するときに、正しくパーセントエンコードされていることを確認してください。また、アプリケーションレコードのプレースホルダHTTPベースのコールバックがdev.twitter.com/appsにあることを確認してください。

+0

ありがとう!私を例にリンクさせるか、ヘッダーベースのOauthを区別するものを提供してください。 – BillPull

関連する問題