Grails Facebook身份验证插件无法打开FB身份验证页面

时间:2013-03-17 21:53:53

标签: facebook grails facebook-authentication

我正在尝试使用Grails Facebook身份验证插件。

我的目标是使用服务器端身份验证,这是默认的。

根据文档

  

首选和服务器端应用程序的标准登录。点击“连接按钮”后,用户将被重定向到特殊的Facebook页面进行身份验证,然后重定向回您的应用程序。

我期待获得特殊的FB页面,但它正在重定向到 / j_spring_security_facebook_redirect而不是。没有显示FB页面。

我没有登录FB

我的配置如下:

grails.plugins.springsecurity.facebook.domain.classname='br.com.fisgo.security.Credential'
grails.plugins.springsecurity.facebook.domain.relation = 'SameObject'

grails.plugins.springsecurity.facebook.secret = 'xxxx'
grails.plugins.springsecurity.facebook.appId = 'xxxxxx'

grails.plugins.springsecurity.facebook.filter.redirect.processUrl='/sign/facebookLogin'
grails.plugins.springsecurity.facebook.filter.type='redirect'

grails.plugins.springsecurity.facebook.taglib.button.text='Login com facebook'

我找不到问题。

我在重定向上遇到的错误是:

| Error 2013-03-18 09:35:50,307 [http-bio-80-exec-1] ERROR [/].[default] - 
Servlet.service() for servlet [default] in context with path [] threw exception
 Message: Cannot create a session after the response has been committed Line | Method 
->> 1110 | runWorker in java.util.concurrent.ThreadPoolExecutor - - - - - - - - - - - 
- - - - - - - - - - - - - - - - - - - - - - - - - | 603 | run in 
java.util.concurrent.ThreadPoolExecutor$Worker ^ 722 | run . . . in java.lang.Threa

我也找到了

ERROR facebook.DefaultFacebookAuthDao  - Can't find authority join class (br.com.fisgo.security.CredentialRole). Please configure 'grails.plugins.springsecurity.userLookup.authorityJoinClassName' value, or create your own 'List<GrantedAuthority> facebookAuthService.getRoles(user)'

课程可用

1 个答案:

答案 0 :(得分:1)

我遇到了同样的Cannot create a session after the response has been committed错误。

问题是Spring安全性不允许匿名访问j_spring_security_facebook_redirect。不确定你是如何配置grails spring安全插件的,但在我们的例子中这有助于:

grails.plugins.springsecurity.interceptUrlMap = [
....
'/j_spring_security_facebook_redirect': ['IS_AUTHENTICATED_ANONYMOUSLY'],
....
]

要查找问题的原因,请尝试在response.sendRedirect(facebookAuthUtils.prepareRedirectUrl(getAbsoluteRedirectUrl(), facebookAuthUtils.requiredPermissions))中注释掉第59行FacebookAuthRedirectFilter