1

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

4

1 回答 1

1

如果您使用默认 DAO

它存储在accessTokenFacebook 用户的域对象字段中。

如果您没有字段 named accessToken,您应该添加它 ( String accessToken)。理想情况下带有一个附加字段:Date accessTokenExpires. 这两个字段都将由插件自动填充。

如果你已经创建了自己的 DAO实现,那么:

  • create(FacebookAuthToken token)将访问令牌作为token.accessToken.accessToken. 您可以将其存储在任何您想要的地方
  • Boolean hasValidToken(F user),void updateToken(F user, FacebookAuthToken token)getAccessToken(F user)- 首先应该检查令牌过期,第二次更新新值(在令牌过期时调用),最后应该返回当前值。

正如您所说,您拥有自己的 DAO 实现。你是如何实现最后三种方法的?

于 2012-08-09T15:46:42.167 回答