我创建了使用三方OAuth访问用户联系人API的网络应用程序。在过程结束时,我收到一个access_token和access_token_secret,我将其与user_id(用户的电子邮件)一起保存在数据库中。
问题是下次有人试图通过我想要的OAuth,如果我已经有现有的令牌使用它而不是完成整个过程。
在用户通过身份验证之前,是否有办法获取user_id。
对于身份验证我正在使用此处的代码: http://code.google.com/appengine/articles/java/retrieving_gdata_feeds.html
答案 0 :(得分:1)
在后台使用存储的访问令牌访问页面(\me?access_token=)
。如果令牌仍然有效,您将获得无错误的响应。如果令牌不再有效,您将获得OAuthException
作为回复。
get userData with old access token
if exception is thrown => Redo authentication process
else => continue with old token
答案 1 :(得分:1)
这取决于受OAuth保护的资源。通常,如果存在目标user_id,则可以通过额外调用RESTful服务来获取它。
例如,对于Google+,你会有类似的内容(使用我的G+ wrapper):
String userId = plus.getPeopleOperations().get("me").getId();