it-swarm.com.de

Twitter-API - Gründe für "ungültiges oder abgelaufenes Token"

Welche möglichen Gründe können dazu führen, dass das Token abläuft (außer dass der Benutzer die App nicht autorisiert)?

Mein Problem ist, dass ich eine App mit mehreren Tausenden von Benutzern habe. Die API-Kommunikation funktioniert einwandfrei. Für einige Benutzer erhalte ich jedoch den invalid or expired token-Fehler. Zunächst war es jedoch der Benutzer, der die Authentifizierung der App abgebrochen hat, aber ich habe Kontakt aufgenommen einige von ihnen und sie haben den Zugang nicht widerrufen.

Irgendwelche Ideen, welche anderen Probleme diesen Fehler verursachen können?

24
Ran

Überprüfen Sie jederzeit die Integrität eines Zugriffstokens, indem Sie das GET-Konto/verify_credentials aufrufen, während Sie dieses Zugriffstoken verwenden.

Es wurde erwähnt und durch Recherchen erfuhr ich, dass:

Ihr Zugriffstoken ist ungültig, wenn ein Benutzer Ihre .__ explizit ablehnt. Anwendung von ihren Einstellungen oder wenn ein Twitter-Administrator Ihre Anwendung. Wenn Ihre Bewerbung ausgesetzt ist, wird am .__ ein Hinweis angezeigt. Ihre Bewerbungsseite zeigt an, dass sie ausgesetzt wurde.

Warum ist mein Twitter-Zugriffstoken ungültig/abgelaufen?

Überprüfen Sie diesen Beitrag: ungültige/abgelaufene Zugriffstoken .

Es gibt einen Beitrag in Google-Gruppen, der sagt:

Sie erhalten keine zweite Chance und dies ist beabsichtigt. OAuth-Anfragen eine eindeutige Unterschrift haben; Sobald eine bestimmte Anfrage eingereicht wurde, wird es kann nicht erneut eingereicht werden . Wenn sie den Pin richtig eingeben, ist alles in Ordnung, Sie erhalten ein Zugriffstoken . Wenn sie den Pin falsch eingeben, erhalten Sie 401 Unauthorized - das ist erwartet. Wenn sie dann noch einmal versuchen, den Pin einzugeben, sogar den korrekten Pin zeigt als nicht autorisiert.

Überprüfen Sie diesen Link für die obige Referenz.

Einige Vorschläge von Twitter-Mitarbeitern für dasselbe Problem:

Ich denke, es gibt zwei Dinge, die ich an dieser Stelle vorschlagen würde: 1.) Gehen Sie zu Ihre Anwendungseinstellungen und verwenden Sie die Registerkarte "Reset-Tasten", um Ihre .__ zurückzusetzen. Consumer-Schlüssel und geheim, aktualisieren Sie diese Werte in der App und Stellen Sie sicher, dass Sie immer noch dasselbe Verhalten sehen. 2.) Versuchen Sie es mit oauth_callback in Ihrem request_token-Aufruf. Ehrlich gesagt glaube ich das nicht wird einen Unterschied machen, aber ich möchte versuchen, so streng wie möglich zu sein. Hier.

Überprüfen Sie auch diese Diskussion Sprichwort:

Sie müssen das oauth_token und das von .__ zurückgegebene oauth_token_secret verwenden. Der Aufruf oauth/access_token anstelle des Aufrufs in den Einstellungen Ihrer App in dev.Twitter.com

15
My God

Zusätzlich zu den Kommentaren, die alle anderen gemacht haben, gibt die Twitter-API manchmal einen Fehler "ungültiges Token" aus, wenn das Token nicht das Problem ist. Ich habe es am meisten bemerkt, wenn ich eine Anforderungszeichenfolge erstellt habe, die nicht korrekt analysiert wird. Einmal bekam ich zum Beispiel den Fehler, als ich bildschirmname weitergab, der Symbole enthielt, die nicht URI-codierbar waren. Ich habe es auch bekommen, als ich leere Werte wie diese übergeben habe (wo der Cursor leer ist):

https://api.Twitter.com/1/followers.json?cursor=&screen_name=whatevah

Können Sie uns die Einzelheiten der Aufrufe mitteilen, die diesen Fehler zurückgeben?

4
milestyle

Ich bekam die gleiche Fehlermeldung, änderte dann (access_token) to (access_token_key) und es funktionierte für mich.

Ich hoffe es hilft jemandem.

3
iwayankit

Antwort meines Gottes ist richtig, aber ich werde meine Antwort aus einer anderen Frage erklären und erklären, wie es die Uhr Ihres Computers sein könnte:

Wenn Ihr OAuth-Fluss an einem Tag funktioniert hat und am nächsten Tag fehlgeschlagen ist, überprüfen Sie clock Ihres Computers. Ich habe eine Vagrant-Box ausgeführt, die irgendwie auf den Tag zuvor eingestellt war, was dazu führte, dass die Twitter-API {"code": 89, "message": "Ungültiges oder abgelaufenes Token" zurückgibt.}} Dies kann auch als 401-Zeitmarke außerhalb der Grenzen erscheinen. Mit diesem Befehl können Sie Ihre Uhr in Ubuntu aktualisieren:

Sudo ntpdate time.nist.gov

Alternative Methode Wenn ntpdate auf Ihrem System nicht verfügbar ist:

Sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
1
Zack Morris

wenn Ihr Access Token = 738629462149844993-FcWHjfcucCLGEosyGGQ38qI ****** iC ist, vergessen Sie nicht, den Bindestrich (-) gefolgt von Ihrer USERID anzugeben. 

1
vasu

Vor allem schöne Frage, Ran. 

Ich möchte Sie fragen, ob Sie Twitter-Entwickler durchlaufen haben?

Manchmal wird es mehrdeutig, welches Token verwendet werden soll, da Twitter zwei Paare von Token und die Bibliothek zur Verfügung stellt. Einer davon ist ein geheimer Schlüssel.

Sie müssen das Token auswählen, das mit Ihrer Twitter-ID und einem Bindestrich beginnt.

Nun ist Ihre Frage, dass dieser Fehler bei einigen Ihrer Benutzer auftritt. Hier ist also die Antwort, die eine App selbst bei der Auswahl des Tokens mehrdeutig findet. 

Ich bin zwar nicht ganz richtig, aber ich empfehle Ihnen, diese Lösung mindestens einmal zu versuchen. 

1

Möglicherweise haben diese Benutzer nicht den Zugriff aufgehoben. Nach meiner Erfahrung kann ein Zugriffstoken jedoch auch abgelaufen sein, nachdem der Benutzer (in Testfällen: Ich) sein Passwort geändert hat.

Wenn der Benutzer dies tut, können Sie die API REST der Stream-API im Bereich dieses Benutzers nicht mehr verwenden. Bitte passen Sie Ihre Bewerbung an diese Situation an. Sperren Sie die Sitzung des Benutzers. Wenn er zu Ihrer Anwendung zurückkehrt, kann er erneut zu Twitter umgeleitet werden, um einen neuen OAuth-Zugriffstokenprozess zu starten. Oder senden Sie ihm eine E-Mail, um die Verbindung erneut herzustellen. Vimeo/Windows/... sind einige der Personen, die abgelaufene Token mit E-Mails verwalten.

Habe Spaß!

1
hannesvdvreken

Haben Sie bestätigt, dass die Token einmal gearbeitet haben? In einem OAuth-System, an dem ich arbeitete, gab es einen Fehler in der Art und Weise, wie Token sicher gespeichert und abgerufen wurden, wodurch ein kleiner Prozentsatz von ihnen beschädigt wurde. Wenn Sie bestätigen können, dass die Token in der Vergangenheit funktioniert haben, ist dies ein guter erster Schritt.

Wenn Sie die Token aus dem Speicher abrufen, bleiben sie unverändert? Ist es möglich, dass sie durch die Art und Weise, wie Sie sie verwalten, beschädigt werden?

Legen Sie einige Protokolle an, um zu verfolgen, wann Token funktionieren und ausfallen. Fängt ein Token immer wieder an zu arbeiten, nachdem es einmal fehlgeschlagen ist? Wenn Sie ein Token 30 Tage lang nicht verwenden, läuft es ab? Mit einem detaillierten Protokoll können Sie die abgelaufenen Token identifizieren und nach Mustern suchen, die darauf hinweisen, dass sie möglicherweise abgelaufen sind.

Achten Sie darauf, auch andere Möglichkeiten zu erkunden. Wie können Benutzer Token in Twitter widerrufen? Ist es leicht, das aus Versehen zu tun? Haben Benutzer mit fehlgeschlagenen Token andere autorisierte Apps, die ebenfalls nicht mehr funktionieren?

0
tomlogic

Möglicherweise ist dies hilfreich für Sie. Ich hatte das gleiche Problem.

Hier finden Sie den Code-Snippet

$code = $tmhOAuth->user_request(array(
      'method' => 'POST',
     'url' => $tmhOAuth->url('oauth/access_token', ''),
     'params' => array(
            'oauth_verifier' => trim($params['oauth_verifier']),
        )
      ));

   if ($code == 200) {
        $oauth_creds = $tmhOAuth->extract_params($tmhOAuth->response['response']); 
        // echo '<pre>';print_r($oauth_creds);exit;


      $tmhOAuth->reconfigure(array_merge($tmhOAuth->config, array(
         'token'  => $oauth_creds['oauth_token'],
            'secret' => $oauth_creds['oauth_token_secret'],
     )));

  $code = $tmhOAuth->user_request(array(
          'url' => $tmhOAuth->url('1.1/account/verify_credentials') 
   ));


}
0
Amit