2015-02-09 17 views
9

Próbuję pobrać dane z Twittera za pomocą Tweepy, używając poniższego kodu, ale zwracam błąd 401 i regeneruję dostęp i tajne tokeny, i pojawił się ten sam błąd.401 Błąd podczas pobierania danych z Twittera za pomocą Tweepy

#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]) 
+0

Czy autoryzowałeś aplikację na swoim koncie twitter? [pomocy łącza] [1] [1]: http://stackoverflow.com/questions/19095257/using-twython-to-send-a-tweet-twitter-api-error/19196583 # 19196583 –

+0

Niestety, wciąż mam ten sam błąd. – user3643380

+0

Próbowałem również sprawdzić logowanie za pomocą pola twitter, ale bezużyteczne. Jakaś pomoc !!! – user3643380

Odpowiedz

8

Po prostu zresetuj zegar systemowy.

Jeśli żądanie API do uwierzytelnienia pochodzi z serwera, który twierdzi, że jest to czas poza 15 minutami czasu Twittera, zakończy się niepowodzeniem z błędem 401.

ThankYou

+0

Myślę, że to w rzeczywistości 5 minut, nie 15 minut. Dotyczy to również żądań strumieniowych. Polecenia REST API będą działać poprawnie, nawet jeśli zegar nie będzie zsynchronizowany. – Jonas

3

Może po prostu popełnił błąd w kopiowaniu token dostępu od strony apps.twitter.com.

Należy skopiować całą rzecz podaną jako token dostępu, a nie tylko ciąg po numerze -.

Na przykład, skopiuj i wklej ciąg cały jak 74376347-jkghdui456hjkbjhgbm45gj, nie tylko jkghdui456hjkbjhgbm45gj.

[Uwaga: powyższy ciąg jest po prostu wpisany losowo dla celów demonstracyjnych. Twój rzeczywisty token dostępu będzie również wyglądał tak, np. "ciąg cyfr - ciąg alfanumeryczny"]

0

wystarczy, że pokażesz klucze w podwójnej ofercie i nie musisz określać swoich klucze w uwierzytelnianiu zeszłego twittera.

#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

w moim przypadku wystąpił błąd, ponieważ używałem AppAuthHandler zamiast OAuthHandler. Przejście na OAuthHandler rozwiązało problem.

Powiązane problemy