2017-04-20 4 views
1

Ich versuche, eine Verbindung mit dem Twitter-Stream-API herzustellen, um Tweets in Echtzeit zu holen. Dieser Codeabschnitt funktionierte bis vor 5-6. Plötzlich habe ich die ganze Zeit 401 bekommen. Seltsamerweise geschieht dies sowohl auf meinem lokalen Computer als auch auf unserem Produktionsserver, der sich in der Cloud befindet. Daher denke ich, dass dies kein Problem im Zusammenhang mit dem Netzwerk ist. HierTweepy-Streaming gibt 401 Autorisierung erforderlich

ist der Code:

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"]) 

Bisher habe ich versucht, die folgenden:

  1. Gewinnung neuer Consumer-Key, Consumer-Secret, Zugriffstoken und Zugriffstoken Geheimnis. Ich habe 4 verschiedene Tasten verwendet, die vorher funktionierten.
  2. Erstellt eine neue App von apps.twitter.com. Die Callback-URL wurde gefüllt, da einige Benutzer gemeldet haben, dass 401 "Autorisierung erforderlich" mit dem Feld für die Rückruf-URL in Verbindung steht, das auf der Anwendungsseite von Twitter fehlt.
  3. Synchronisiert meine Uhr mit einem NTP-Server, sowohl auf meinem lokalen und auf Produktionsserver. Meine Uhr ist nicht ausgeschaltet.
  4. Meine Anwendung haben die richtigen Berechtigungen und ich erhielt Zugriffstoken und geheime nach der Konfiguration. Hier

ist die Anfrage:

'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' 

Jede Hilfe würde geschätzt, warum ich erhalte eine 401 Unauthorized "Authorization Need" Antwort.

Edit: Ich habe auch Twython versucht und ich habe die gleiche Antwort von Twitter zurück.

Dank

Antwort

0

Ich konnte das Problem nach 2 Wochen der Fehlerbehebung lösen. Für Tweepy müssen Sie die Callback-URL des Authentifizierungsobjekts, das Sie zur Authentifizierung mit dem Twitter verwenden, manuell festlegen.

Nach dieser Korrektur gehen Sie zu apps.twitter.com und entfernen Sie das Häkchen aus dem Kästchen "Erlaube diese Anwendung, sich mit Twitter anzumelden". Twitter API ist mit den Fehlermeldungen überhaupt nicht prägnant.

0

Vielleicht können Sie versuchen, Twython OAuth2 mit verbinden, wenn Sie nicht zurück tweet müssen Twython Auth

Oder versuchen Sie diesen Code verwenden.

# 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) 

Dies sollte funktionieren. Möglicherweise ist Ihr Bot auf dem Konto nicht autorisiert und dies könnte der Fehler sein. Aber ich denke nicht, dass es so ist.

überprüfen meine BOT Auth, wenn Sie ein Beispiel wollen: ED_Postcards BOT
(Neue Version eingehenden mit hübschen Code)

+0

Das gleiche gilt auch für Twython Oauth. Außerdem benötigen Sie Oauth2 nicht, um eine Verbindung zum Stream-Endpunkt herzustellen. –

+0

Verwenden Sie eine veraltete Version von Tweepy? –

Verwandte Themen