2012-03-26 8 views
0

Ich habe eine Webanwendung erstellt, die dreibeiniges OAuth verwendet, um auf die Kontakte-API des Benutzers zuzugreifen. Am Ende des Prozesses erhalte ich ein access_token und access_token_secret, die ich zusammen mit der user_id (Benutzer-E-Mail) in einer Datenbank hinterlege.Java OAuth Benutzer-ID abrufen

Das Problem ist, dass das nächste Mal, wenn jemand versucht, durch das OAuth zu gehen, ich will, wenn ich bereits vorhandenes Token habe, es zu verwenden, anstatt die ganze Prozedur durchzugehen.

Gibt es eine Möglichkeit, die Benutzer-ID zu erhalten, bevor der Benutzer authentifiziert wird.

Zur Authentifizierung verwende ich den Code von hier: http://code.google.com/appengine/articles/java/retrieving_gdata_feeds.html

Antwort

1

Im Hintergrund (\me?access_token=) unter Verwendung der gespeicherten Zugriffstoken eine Seite besuchen. Wenn das Token noch gültig ist, erhalten Sie eine fehlerfreie Antwort. Wenn das Token nicht mehr gültig ist, erhalten Sie eine OAuthException als Antwort.

get userData with old access token 

if exception is thrown => Redo authentication process 
else => continue with old token 
1

Es hängt von der durch OAuth geschützten Ressource ab. Wenn es eine Ziel-Benutzer-ID gibt, können Sie diese normalerweise durch einen zusätzlichen Aufruf eines REST-Dienstes abrufen.

Zum Beispiel mit Google+ man so etwas (mit meiner G+ wrapper) haben würde:

String userId = plus.getPeopleOperations().get("me").getId(); 
+0

Klarstellung: Ich bin mit der OAuth-Authentifizierung für die Google-Kontakte API. – Ivo

+0

Nun, ich weiß nicht, ob da eine ID ist – Bozho