以下のコードを使用してTweepyを使用してTwitterデータを取得しようとしていますが、401エラーが返され、アクセストークンとシークレットトークンを再生成すると、同じエラーが発生しました。
#imports
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
#setting up the keys
consumer_key = 'xxxxxxx'
consumer_secret = 'xxxxxxxx'
access_token = 'xxxxxxxxxx'
access_secret = 'xxxxxxxxxxxxx'
class TweetListener(StreamListener):
# A listener handles tweets are the received from the stream.
#This is a basic listener that just prints received tweets to standard output
def on_data(self, data):
print (data)
return True
def on_error(self, status):
print (status)
#printing all the tweets to the standard output
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
stream = Stream(auth, TweetListener())
t = u"#سوريا"
stream.filter(track=[t])
システムの時計をリセットするだけです。
認証するAPIリクエストが、Twitterの15分外の時間であると主張するサーバーから送信された場合、401エラーで失敗します。
ありがとうございました
apps.Twitter.com
ページからアクセストークンをコピーするのを間違えた可能性があります。
-
の後の文字列だけでなく、アクセストークンとして指定されたもの全体をコピーする必要があります。
たとえば、74376347-jkghdui456hjkbjhgbm45gj
だけでなく、jkghdui456hjkbjhgbm45gj
のような全体文字列をコピーして貼り付けます。
[上記の文字列は、デモンストレーションの目的でランダムに入力したものにすぎないことに注意してください。ただし、実際のAccessトークンも次のようになります。つまり、「数字の文字列-英数字の文字列」]
私の場合、エラーはAppAuthHandler
ではなくOAuthHandler
を使用していたために発生しました。 OAuthHandler
に切り替えると、問題が解決しました。
キーを二重引用符で囲むだけで、最後のTwitter認証でキーを定義する必要はありません。
#Import the necessary methods from tweepy library
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
#Variables that contains the user credentials to access Twitter API
access_token = 'X3YIzD'
access_token_secret = 'PiwPirr'
consumer_key = 'ekaOmyGn'
consumer_secret = 'RkFXRIOf83r'
#This is a basic listener that just prints received tweets to stdout.
class StdOutListener(StreamListener):
def on_data(self, data):
print data
return True
def on_error(self, status):
print status
if __name__ == '__main__':
#This handles Twitter authetification and the connection to Twitter
Streaming API
l = StdOutListener()
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
stream = Stream(auth, l)
#This line filter Twitter Streams to capture data by the keywords: 'python',
'javascript', 'Ruby'
stream.filter(track=['python', 'javascript', 'Ruby'])