【发布时间】:2012-08-06 21:05:59
【问题描述】:
我正在使用 spring-security-facebook 插件进行身份验证。它运作良好,现在我正在尝试使用 spring-social-facebook 的一些需要授权的功能。从我的控制器中,我在哪里可以获得有效的 accessToken(以创建 FacebookTemplate 对象)?
这就是我使用插件的方式:
1) 我添加了一个域类 OAuthUser(不是在插件中,而是在我的项目中)
2) 我生成了一个 FacebookAuthDaoImpl
3) 我编辑了生成的方法,例如在 create() 中,我创建了
+ 用户实例(主域类 SecUser)并设置配置文件信息
+ 一个新的 OAuthUser(我在其中设置了 uid、accessToken,并将其与创建的主用户相关联。
更新 1: 我在我的 FacebookAuthDaoImpl 类中添加了这 3 个方法:
Boolean hasValidToken(OAuthUser user){
def now= new Date()
if(now.after(user.accessTokenExpires)){
return false
} else {
return true
}
}
void updateToken(OAuthUser user, FacebookAuthToken token){
user.accessToken = token.accessToken
user.save()
}
String getAccessToken(OAuthUser user){
return user.accessToken
}
但我还有过期的 AccessToken。
【问题讨论】:
-
但是你在哪里更新
user.accessTokenExpires?hasValidToken为 null 时返回什么? -
@IgorArtamonov 我没有,我想知道从哪里可以得到到期日期。你有样品吗? (顺便说一句,我想出了如何从身份验证中获取 accessToken
FacebookAuthToken token = SecurityContextHolder.context.authentication token.accessToken = facebookAuthUtils.getAccessToken(token.code)) -
void updateToken(OAuthUser user, FacebookAuthToken token) { user.accessToken = token.acceessToken.accessToken user.accessTokenExpiration = = token.acceessToken.expireAt }
-
@IgorArtamonov 是插件调用的 hasValidToken() 和 updateToken() 吗?还是我需要自己在 FacebookAuthDaoImpl 中添加调用?在这种情况下在哪里?因为我拥有令牌的唯一地方是调用 create() 时(并且此调用是在用户第一次登录时进行的)
标签: facebook facebook-graph-api grails spring-security