Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails facebook spring安全性返回null_Facebook_Grails_Spring Security_Spring Social_Spring Social Facebook - Fatal编程技术网

Grails facebook spring安全性返回null

Grails facebook spring安全性返回null,facebook,grails,spring-security,spring-social,spring-social-facebook,Facebook,Grails,Spring Security,Spring Social,Spring Social Facebook,我正在使用“:spring security facebook:0.17”与“:spring security core:2.0-RC5”集成。 我已经实现了用于定制的facebookAuthService.groovy。但令牌未经过身份验证,fbProfile将返回除id和名称之外的null FacebookUser create(FacebookAuthToken token) { log.info("Create domain for facebook user $token.ui

我正在使用“:spring security facebook:0.17”与“:spring security core:2.0-RC5”集成。 我已经实现了用于定制的facebookAuthService.groovy。但令牌未经过身份验证,fbProfile将返回除id和名称之外的null

FacebookUser create(FacebookAuthToken token) {
    log.info("Create domain for facebook user $token.uid")

    //Use Spring Social Facebook to load details for current user from Facebook API
    Facebook facebook = new FacebookTemplate(token.accessToken.accessToken)
    FacebookProfile fbProfile = facebook.userOperations().userProfile
    FacebookProfile fbProfile2 = facebook.userOperations().getUserProfile()
    def ff = facebook.userOperations().userPermissions
    String email = fbProfile.email
    String username = fbProfile.username
    String firstName = fbProfile.firstName
    String lastName = fbProfile.lastName

    println fbProfile as JSON
    println token as JSON
    println fbProfile.email

    User person = new User(
            username: 'jgf',
            password: token.accessToken.accessToken, //not really necessary
            enabled: true,
            accountExpired:  false,
            accountLocked: false,
            passwordExpired: false,

            //fill with data loaded from Facebook API
            email: email
    )
    person.save(failOnError: true)
    UserRole.create(person, AuthRole.findByAuthority('ROLE_USER'))
    UserRole.create(person, AuthRole.findByAuthority('ROLE_FACEBOOK'))
    FacebookUser fbUser = new FacebookUser(
            uid: token.uid,
            accessToken: token.accessToken.accessToken,
            accessTokenExpires: token.accessToken.expireAt,
            user: person
    )
    fbUser.save(failOnError: true)
    return fbUser
}
答复如下: 访问令牌:

{“accessToken”:{“accessToken”:“CAAHT52DPMKIBAH34ZFDY0PZC3A9Y3JZARVFCKTHN9XMZCOGL6QHZXNINA07ZBA5ZBXW2BWWYFLVCIIKPZN3PNK8QHFNQZCTS8TAHB1 WK4AEJZBEPNHQFRWSPZBOI0VK7U5W0IZB7GWX0MJCZC7UBY5MHB5W5RLKZB1WTN09QS4NIG9K9KDI22OPWBPEKKKKKKZD9FZDZD8KZD8KZD8KZD8W1W1W1W1W1W1W1W1W1W1W1W1W1W8W8W8W8W8W8W8W8W8W8W8W8W8W8W2.这两个词的意思是:一个词的意思意思是:一个词的意思是:一个词的意思是:一个词的意思是,一个词的意思是,一个词的意思是,一个词的意思是,一个词的意思是,一个词的意思是,一个词的意思是,一个词的意思是,一个词的意思是,一个词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词的意思是,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词,一个单词的意思是KS-8oSe8dyj1T6gAc8BG2yQ4bycPftVqfNt3uCGpesYIkI-dnwxd“,“凭据”:10261800340687885,“详细信息”:null,“名称”:““主体”:null,“重定向URI”:““uid”:10261800340687885}”

和FBI档案:

{“关于”:null,“生物”:null,“生日”:null,“班级”:“org.springframework.social.facebook.api.FacebookProfile”,“教育”:null,“电子邮件”:null,“FavoriteAthereletes”:null,“favoriteTeams”:null,“firstName”:null,“性别”:null,“家乡”:null,“id”:“10261800340687885”,“inspirationalPeople”:null,“interestedIn”:null,“语言”:null,“lastName”:null,“链接”:null,“语言环境:null,“位置”:null,“中间名”:null,“名称”:“桑吉布” Maharjan,“political”:null,“quotes”:null,“relationshipStatus”:null,“relationshipStatus”:null,“宗教”:null,“signantother”:null,“体育”:null,“thirdPartyId”:null,“timezone”:null,“updatedTime”:null,“用户名”:null,“网站”:null,“工作”:null}

这里的问题是一切都是空的,我不知道为什么

PS:所有facebook凭据均正确,并且还提供了权限(公共个人资料、电子邮件和用户关于我)。
是因为令牌没有经过身份验证,还是我缺少了其他东西。非常感谢您的帮助。

我终于明白了为什么除了名称和id之外所有内容都是空的

Facebook自2015年7月8日起更改了api-api版本2.4:

根据这一点,我们必须指定要返回的每个字段和边,例如


facebook.userOperations().getUserProfile()提供了除id和名称之外的空字段。因此解决方案是使用不同的api来设置字段,或者我们可以通过点击uri()手动完成。我终于弄明白了为什么除了名称和id之外所有内容都是空的

Facebook自2015年7月8日起更改了api-api版本2.4:

根据这一点,我们必须指定要返回的每个字段和边,例如


facebook.userOperations().getUserProfile()提供除id和name之外的空字段。因此,解决方案是使用允许设置字段的不同api,或者我们可以通过点击uri()手动执行此操作.

您的
fbProfile
包含
id
name
顺便说一句。似乎Facebook API返回了一些东西,并且凭据是正确的。可能fb上的用户安全限制了提供此类数据?另外,请尝试使用curl从命令行获取,如
curlhttps://graph.facebook.com/me?access_token=
然后查看它可以工作您的
fbProfile
包含
id
name
顺便说一句。Facebook API似乎返回了一些东西,并且凭据是正确的。可能fb上的用户安全限制了提供此类数据?另外,尝试使用curl从命令行获取它,如
curlhttps://graph.facebook.com/me?access_token=
并请参见如果它可以工作,但您是通过Spring Social Facebook请求此数据。我的意思是不是通过此身份验证插件。插件只会给您一个访问令牌,对吗?您传递给Spring Social Facebook客户端的字段列表(
Facebook.userOperations().getUserProfile()
).它是独立的库,不以任何方式绑定到插件,实际上,如果您愿意,您可以使用任何其他facebook客户端,但您是通过Spring Social facebook请求此数据的。我的意思是不是通过此身份验证插件。插件只会给您一个访问令牌,对吗?您传递给Spring Social facebook客户端的字段列表(
facebook.userOperations().getUserProfile()
)。它是独立的库,不以任何方式绑定到插件,实际上,如果您愿意,您可以使用任何其他facebook客户端