0

我正在尝试使用 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)'

该课程可用

4

1 回答 1

1

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

问题是 Spring Security 不允许匿名访问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)).FacebookAuthRedirectFilter

于 2013-04-03T19:10:14.437 回答