我正在使用spring-security-facebook插件进行身份验证。它运作良好,现在我正在尝试使用需要授权的spring-social-facebook的某些功能。从我的 Controller ,哪里可以获取有效的accessToken(以创建FacebookTemplate对象)?
这就是我使用插件的方式:
1)我添加了一个域类OAuthUser(不是在插件中,而是在我的项目中)
2)我已经生成了一个FacebookAuthDaoImpl
3)我编辑了生成的方法,例如在create()中,我创建了
+一个用户实例(主域类SecUser)并设置配置文件信息
+一个新的OAuthUser(我在其中设置uid,accessToken,并将其与创建的主要用户相关联。
更新1:
我在FacebookAuthDaoImpl类中添加了这三种方法:
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。
最佳答案
如果您使用的是默认DAO :
它存储在Facebok用户的域对象的accessToken
字段中。
如果没有名为accessToken
的字段,则应添加它(String accessToken
)。理想情况下,还有一个附加字段:Date accessTokenExpires
。并且两个字段都将由插件自动填充。
如果您已经创建了自己的 DAO 实现,那么:
create(FacebookAuthToken token)
将访问 token 作为token.accessToken.accessToken
传递。您可以将其存储在任何希望的位置Boolean hasValidToken(F user)
,void updateToken(F user, FacebookAuthToken token)
和getAccessToken(F user)
-首先应检查 token 到期,第二次应使用新值( token 过期时调用)进行更新,最后应重新计算当前值。 如您所说,您拥有DAO的职责。最后三种方法的实现方式?
关于facebook - Grails Spring-Security-Facebook插件的accessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886814/