2013-03-17 98 views
0

我正在尝试使用Grails Facebook身份验证插件。Grails Facebook身份验证插件未打开FB身份验证页面

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

按照该文档

它的首选和服务器端应用程序进行标准登录。点击“连接按钮”后,用户会被重定向到特殊的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)' 

类是可用的

+0

'/ j_spring_security_facebook_redirect'后面发生了什么? – 2013-03-18 04:32:52

+0

请将它添加到您的问题 – 2013-03-18 12:54:26

回答

1

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

问题是春季安全不允许匿名访问j_spring_security_facebook_redirect。不知道你如何配置Grails的春季安全插件,但对我们来说这有助于:

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

要找到您的问题的原因尝试在FacebookAuthRedirectFilter注释掉线59 response.sendRedirect(facebookAuthUtils.prepareRedirectUrl(getAbsoluteRedirectUrl(), facebookAuthUtils.requiredPermissions))