2013-01-15 19 views
5

Ich verwende Scribe (OAuth1.0) als Mechanismus, damit Benutzer ihren Twitter-Account verwenden können, um sich bei meiner GWT/GAE-Anwendung zu authentifizieren.Twitter erinnert sich nicht an Autorisierung

Gemäß https://dev.twitter.com/docs/auth/implementing-sign-twitter gibt es 3 mögliche Szenarien: a/Benutzer ist angemeldet und genehmigt. In diesem Fall sollte Twitter den Benutzer umleiten in transparenter Weise zurück zu meiner Anwendung URL, b/Benutzer angemeldet ist, aber nicht autorisieren, oder c/Benutzer ist nicht in

unterzeichnet Bei Twitter meine Anwendung kommt zurück (Callback), Verwende ich den Verifier-Parameter, um die Benutzerdaten von Twitter zu lesen, die ich benutze, um den Benutzer in meiner Anwendung zu bestimmen.

Das alles funktioniert gut, mit Ausnahme der folgenden:

Szenario a/ist für mich nicht funktioniert. Obwohl der Benutzer meine Anwendung bereits autorisiert hat, seine Benutzerdaten zu lesen, scheint sich Twitter nicht daran zu erinnern und bittet erneut um Autorisierung des Zugriffs. (Szenario b /)

+0

Ich kann eine Lösung haben: ich die Callback-Parameter verwenden, könnte das Zugriffstoken und speichern diese in einem Cookie zu bauen. Ich denke, das Zugriffstoken ist permanent. Wenn der Benutzer danach versucht, sich über Twitter anzumelden, verwendet die Anwendung das Zugriffstoken aus dem Cookie. – peternees

Antwort

9

Es gibt zwei URLs, die Twitter für Anwendungen anbietet, die ein OAuth-Token anfordern: /oauth/authenticate und /oauth/authorize. Wenn eine Anwendung Benutzer an den Endpunkt authorized leitet - fordert Twitter den Benutzer auf, die Anwendung bei jeder Anmeldung zu autorisieren. Der authenticate Endpunkt wird einmalig eine Autorisierung anfordern und alle nachfolgenden Anmeldungen an Twitter werden nahtlos zum Anwendungsrückruf weitergeleitet. Dies wird üblicherweise als "Anmeldung mit Ihrem Twitter-Konto" bezeichnet.

In Scribe, der Standard ist genehmigen - dies beglaubigen zu ändern Sie 2 Dinge brauchen:

  1. Sicherstellen, dass die diese Anwendung zulassen verwendet werden Einstellung Anmeldung mit Twitter geprüft auf der Seite mit den Twitter-Anwendungseinstellungen.
  2. in Ihrer Anwendung - wenn Sie die Scribe API-Klasse angeben, verwenden - zu org.scribe.builder.api.TwitterApi.Authenticate.class diese verwenden org.scribe.builder.api.TwitterApi.class Änderung statt

Jetzt wird Ihre Anwendung Benutzer direkt zum /oauth/authenticate Endpunkt Anmelde- und, wenn sie autorisiert Ihre Bewerbung mindestens einmal, sie werden nur durchgereicht.

Edit: Zusätzliche Dokumentation - https://dev.twitter.com/docs/api/1.1#102