web-dev-qa-db-ja.com

401Tweepyを使用してTwitterデータを取得するときにエラーが発生しました

以下のコードを使用して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])
13
user3643380

システムの時計をリセットするだけです。

認証するAPIリクエストが、Twitterの15分外の時間であると主張するサーバーから送信された場合、401エラーで失敗します。

ありがとうございました

11
Prakhar Mishra

apps.Twitter.comページからアクセストークンをコピーするのを間違えた可能性があります。

-の後の文字列だけでなく、アクセストークンとして指定されたもの全体をコピーする必要があります。

たとえば、74376347-jkghdui456hjkbjhgbm45gjだけでなく、jkghdui456hjkbjhgbm45gjのような全体文字列をコピーして貼り付けます。

[上記の文字列は、デモンストレーションの目的でランダムに入力したものにすぎないことに注意してください。ただし、実際のAccessトークンも次のようになります。つまり、「数字の文字列-英数字の文字列」]

4
smaug

私の場合、エラーはAppAuthHandlerではなくOAuthHandlerを使用していたために発生しました。 OAuthHandlerに切り替えると、問題が解決しました。

0
user108569

キーを二重引用符で囲むだけで、最後の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'])
0
Ashish Patel