facebook - Grails Spring-Security-Facebook插件的accessToken

标签 facebook facebook-graph-api grails spring-security

我正在使用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/

    相关文章:

    facebook - 如何在 Facebook Graph Api Explorer 中获取结果?获取错误消息 (#15) 必须使用应用程序 access_token 调用此方法

    javascript - 为什么使用 Facebook 的 Graph API(通过 AJAX POST)上传的图片会获得 "Only Me"权限?

    grails - 无法解析名称为 '/hello/index' 的 servlet 中名称为 'grailsDispatcherServlet' 的 View

    Java/Grails - MongoDB 聚合 16MB 缓冲区大小限制

    javascript - 更改 jQuery 移动应用程序中的 AddThis 共享 URL

    ios - 当用户登录他/她的 iOS 应用程序时访问基本配置文件

    Facebook 电子邮件字段返回 null(即使设置并接受了 “email” 权限)第 2 部分

    facebook - fbprophet 可以处理每小时的数据吗?以及如何处理每小时的数据?

    html - 在 YouTube 等 Facebook 分享中嵌入视频播放器 html5 iframe

    html - Iframe 在 Firefox 和 IE 中不工作