Grails - Spring Security / Social - Facebook 插件 setAccessToken 和 getAccessToken

Posted

技术标签:

【中文标题】Grails - Spring Security / Social - Facebook 插件 setAccessToken 和 getAccessToken【英文标题】:Grails - Spring Security / Social - Facebook plugin setAccessToken and getAccessToken 【发布时间】:2012-01-24 01:08:12 【问题描述】:

我刚刚完成了此页面上的安装说明:http://grails.org/plugin/spring-security-facebook

我选择 AuthUser 作为用户域对象名称,并选择 AuthRole 作为我的角色域对象名称。在所有其他问题中,我选择默认值或输入我的 Facebook App ID 或 Facebook App Secret。

在流程结束时,我有一个 AuthUser 作为我的用户。我还有一个实现 FacebookUserDomain 的 FacebookUser。

当我尝试运行应用程序时,它告诉我我没有在我的 FacebookUser 中实现 getAccessToken 或 setAccessToken。这是 FacebookUserDomain 接口所要求的。这是正常的吗?文件需要填写吗?处理这个问题的正确方法是什么?

更新 这是我尝试用来解决问题的 FacebookUser 类代码。

class FacebookUser implements FacebookUserDomain 
  long uid
  String secret
  String session
  String email
  String accessToken

  static belongsTo = [user: AuthUser]

  static constraints = 
    uid unique: true
  

  public String getAccessToken() 
    return accessToken
  

  public void setAccessToken(String accessToken) 
    this.accessToken = accessToken
  

同样报错:Configuring Spring Security Core ... ... 完成 Spring Security Core 的配置

配置 Spring Security Facebook ... 错误:没有为 Facebook Auth 配置 dao 错误:停止配置 Spring Security Facebook 2011-12-19 19:17:30,261 [main] 错误 util.JDBCExceptionReporter - 未知列 n 'where 子句'中的'deactivate_code' 无法执行本机批量操作查询 2011-12-19 19:17:30,496 [main] ERROR context.GrailsContextLoader - 错误执行 引导程序:找不到类 [class lmfirst] 的名称 [facebookId] 的属性 .AuthUser] org.codehaus.groovy.grails.exceptions.InvalidPropertyException:没有找到属性 d 代表类 [class lmfirst.AuthUser] 的名称 [facebookId] 在 lmfirst.UtilService.createMayor(UtilService.groovy:20)

【问题讨论】:

注意:接受了答案,但 Spring Security 部分仍然存在问题。 【参考方案1】:

你不需要为 accessToken 做 get/set,因为它是由 Groovy 自己自动添加的。拥有String accessToken 就足够了

关于 Facebook Auth dao - 你执行了grails s2-init-facebook 吗?它为你生成默认的 Dao 实现,并在conf/spring/resources.groovy注册它

【讨论】:

好的。可能会在这里遇到 Spring Security 问题。我尝试访问该站点的主“主页”,但出现 500 错误。 org.springframework.security.authentication.BadCredentialsException:无效签名。我错过了什么?我是否需要允许未经身份验证的请求才能访问此页面?我该怎么做? 之前应该说我放弃了这两种方法。并且默认的 FacebookAuthDaoImpl 在那里。不知道为什么我第一次遇到问题。 似乎 500 Bad Credentials 错误源自 FacebookCookieFilter。我不确定为什么此时它正在寻找cookie,因为我试图请求的页面是“对所有人开放”,因为它在控制器方法上没有@attribute,对吧? +1 嗯,你说得对,可能它必须跳过无效的 cookie。顺便说一句,当用户拥有您网站的 facebook cookie 且签名无效时,这种情况并不常见。确定您使用正确的 Facebook 凭据配置插件? 凭据正确。不知道为什么我的帐户控制器索引方法经过身份验证。此时不应该跳过检查任何内容吗?我什至没有显示 facebook 连接按钮?

以上是关于Grails - Spring Security / Social - Facebook 插件 setAccessToken 和 getAccessToken的主要内容,如果未能解决你的问题,请参考以下文章

grails-spring-security-rest 插件和悲观锁定

Grails + spring-security-core:用户登录后如何分配角色?

Grails Spring Security注释问题

Grails spring-security-oauth-google:如何设置

Grails Spring Security 插件网址

Grails/Spring Security:无法使用新创建的用户登录