我使用与“:spring-security-core:2.0-RC5”集成的“:spring-security-facebook:0.17”。 我已经实现了facebookAuthService.groovy用于定制。但是令牌没有被认证,并且fbProfile除id和name外都返回null。Grails Facebook弹簧安全返回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”: “CAAHt52DpmkIBAH34zFdy0PZC3a9y3JZARvfrVckTHN9xMZCOgL6QHzxNIna07ZBa5ZBXw2BZCwyflvCIIkPzn3pNk8QHFNqZCts8tAHZB1wK4AEJZBEPNHqFRWssPZBuIOCa6vk7U5W3K0ilIZB7GWx0MJCZC7UBy5mhb5W5RLkZB1wTn09Qs4NIGU9KDi22OPWbpEKQJoERr9fSfJwZDZD”, “expireAt”:“2016-02-01T06:58: 46Z “},”认证“:假,” 权威 “:[],” 代码 “:” AQD3IrrusGkBsF91yaD68T81S4s-TO4qG17DARQepzB-y2q4vmWSFkoTmMX_ObJHjbOg83YcSE0DwsNjvKS7U2JH_O2C6XjVGM5vG8ZvxpXTo57RFhAzvTxd0NMIVL4Qypto2VRDcLeNI IW8dCQHNqhzJ-0l3_4BQfHk4ygXFEBFTmZA6wkFspnLr9awL5qL8t0m6h5AZbkydM6KhQCYmL_xmy8Evl22NSjYRG-G-edjVNo4t4Fn9AQt7AXEjG_xjytdUoBPa0Zpl5AGM1-VpeYOvhKDPGvXQ3fFkS-8oSe8dyj1T6gAc8BG2yQ4bycPftVqfNt3uCGpesYIkI-dnwxd “ ”资格证书“:1026180034068785, ”细节“:空, ”名“: ”“, ”校长“:空, ”redirectUri“:” http://localhost:8080/j_spring_security_facebook_check “” UID “:1026180034068785}
和fbProfile:
{” 约 “:空,” 生物 “:空,” 生日 “:空,” 阶级 “:” org.springframework.social.facebook .api.FacebookProfile “ ”教育“:空, ”电子邮件“:空, ”favoriteAtheletes“:空, ”favoriteTeams“:空, ”名字“:空, ”性别“:空, ”故乡“:空,” ID “:” 1026180034068785" ,“inspirationalPeopl E “:空,” interestedIn “:空,” 语言 “:空,” 姓氏 “:空,” 链接 “:空,” 现场 “:空,” 位置 “:空,” 中间名 “:空,” 名” :“Sanjib Maharjan”,“political”:null,“quotes”:null,“relationshipStatus”:null,“religion”:null,“significantOther”:null,“sports”:null,“thirdPartyId”:null, timezone“:null,”updatedTime“:null,”username“:null,”website“:null,”work“:null}
这里的问题是一切都是空的,我找不出原因。
PS:所有facebook凭证都是正确的,并且还提供了许可(public_profile,email和user_about_me)。 是因为令牌没有通过身份验证,或者是有一些其他的东西,我失踪。任何帮助表示赞赏。谢谢。
你的'fbProfile'包含'id'和'name'顺便说一句。似乎Facebook API返回的东西和凭据是正确的。 fb上用户的安全性可能会限制提供此类数据?另外,尝试使用curl从命令行获取它,例如'curl https://graph.facebook.com/me?access_token ='并查看它是否有效 –