2017-04-20 12 views
1

twitter stream apiに接続して、リアルタイムでつぶやきを取得しようとしています。このコードは5-6日前に動作していました。突然、私はいつも401を受け取るようになりました。不思議なことに、これは私のローカルマシンとクラウドにあるプロダクションサーバーで起きているので、これはネットワーク関連の問題ではないと思います。ここでTweepy streaming returns 401承認が必要

コードは次のとおりです。

l = StdOutListener() 

auth = OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 
auth.callback = 'https://localhost' #no effect commented/uncommented 
stream = Stream(auth, l) 
stream.filter(track=['twitter'], languages=["es"]) 

これまでのところ、私は次のことを試してみた:

  1. 新しいコンシューマキー、コンシューマシークレット、アクセストークンとアクセストークンシークレットを生成します。私は前に働いていた4種類のキーを使いました。
  2. apps.twitter.comから新しい新しいアプリを作成しました。一部のユーザーが、401の「Authorization Required」が、TwitterのアプリケーションページにないコールバックURLフィールドに関連していると報告したため、コールバックURLを埋めました。
  3. ローカルサーバーと運用サーバーの両方でntpサーバーと同期しています。私の時計はオフではありません。
  4. 私のアプリケーションは正しい権限を持ち、設定後にアクセストークンとシークレットを受け取りました。

    'Content-Length': '22' 
    'Content-Type': 'application/x-www-form-urlencoded' 
    'Authorization': 'OAuth oauth_nonce="161484371946745487981492681844" 
        oauth_timestamp="1492681844" 
        oauth_version="1.0" 
        oauth_signature_method="HMAC-SHA1" 
        oauth_consumer_key="<oauth_consumer_key>" 
        oauth_token="<oauth_token>" 
        oauth_signature="tphQqFWaBvEo2byjZ%2BRqNAM30I0%3D"' 
    Method: 'POST' 
    URL: 'https://stream.twitter.com/1.1/statuses/filter.json?delimited=length' 
    

    すべてのヘルプは、私は401権限「権限が必要です」の応答を取得しています理由については理解されるであろう。ここでは

が要求されます。

編集:私もTwythonを使ってみましたが、私はツイッターから同じ応答を返しました。

おかげ

答えて

0

私は、トラブルシューティングの2週間後に、問題を解決することができました。 tweepyの場合は、twitterで認証するために使用する認証オブジェクトのコールバックURLを手動で設定する必要があります。

この修正後、apps.twitter.comにアクセスし、[このアプリケーションをTwitterでサインインすることを許可する]チェックボックスをオフにします。 Twitter APIは、エラーメッセージでは簡潔ではありません。

0

たぶん、あなたはあなたが戻って Twython Auth

をつぶやくか、このコードを使用してみてくださいする必要がない場合は接続するためにTwythonのOAuth2を使用して試すことができます。

# Put the consumer keys 
auth = tweepy.OAuthHandler("consumer_key", "consumer_secret") 

# Redirect user to Twitter to authorize 
redirect_user(auth.get_authorization_url()) 

# Get access token 
auth.get_access_token("verifier_value") 

# Construct the API instance 
api = tweepy.API(auth) 

#Create the stream 
streamClass= StdOutListener() 
stream= tweepy.Stream(auth = api.auth, listener=streamClass) 

これは動作するはずです。 あなたのボットはアカウントで承認されていない可能性があります。これはエラーの可能性があります。しかし、私はそれが事実だとは思わない。

あなたが例をしたい場合は、私のBOTの認証をチェックアウト: ED_Postcards BOT
を(新バージョンはかなりのコードで着信)

+0

twython Oauthと同じです。また、ストリームエンドポイントに接続するためにOauth2は必要ありません。 –

+0

tweepyの古いバージョンを使用していますか? –

関連する問題