我使用Spring Security Core Plugin进行身份验证,使用Facebook Authentication for Spring Security进行 Facebook 登录。我的 FB 登录与 Spring Security Plugin 配合得很好。但我对此有一些问题。如何获取 Facebook 用户的用户名、电子邮件、电话号码等,以便将其保存到我的数据库中。
这是我的 Spring Security Core Person.groovy 域类文件...
class Person {
transient springSecurityService
String realName
String username
String password
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
byte[] avatar
String avatarType
...... more code ...........
}
在这里您可以看到我添加了更多字段,例如 realName(用于保存 facebook 用户名)、avatar(用于保存 facebook 用户个人资料图像)等。现在 Username 正在像这样保存facebook_100003641451723
。我想要用户的真实姓名,以便我可以将其保存到我的真实姓名字段中。知道我该怎么做吗?
更新 :
我在那里找到了一个解决方案Grails Facebook Login using spring security - 如何知道登录的用户名
但我不知道我把这段代码放在哪里......
void onCreate(FacebookUser user, FacebookAuthToken token) {
Facebook facebook = new FacebookTemplate(token.accessToken.accessToken)
FacebookProfile fbProfile = facebook.userOperations().userProfile
//fill the name
//fieldname ('fullname' at this example) is up to you
user.realName = fbProfile.name
}
更新 :
现在我通过运行创建了新服务,grails create-service FacebookAuthService
并且我的 FacebookAuthService.groovy 是在 services/groovypublish/FacebookAuthService.groovy 中创建的。
这是我的 FacebookAuthService.groovy 文件..
package groovypublish
import org.grails.twitter.Person
import com.the6hours.grails.springsecurity.facebook.FacebookAuthToken
class FacebookAuthService {
def serviceMethod() {
}
void onCreate(Person user, FacebookAuthToken token) {
Facebook facebook = new FacebookTemplate(token.accessToken.accessToken)
FacebookProfile fbProfile = facebook.userOperations().userProfile
//fill the name
//fieldname ('fullname' at this example) is up to you
user.realName = fbProfile.name
}
}
我将依赖项放在我的 BuildConfig.groovy 文件中......
dependencies {
// specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
runtime 'mysql:mysql-connector-java:5.1.22'
compile 'org.springframework.social:spring-social-core:1.0.1.RELEASE'
compile 'org.springframework.social:spring-social-facebook:1.0.1.RELEASE'
}
现在,当我启动我的 grails 应用程序grails run-app
时,它显示错误
C:\Users\Shreshtt\workspace\groovypublish\grails-app\services\groovypublish\FacebookAuthService.groovy: 14: unable to resolve class Facebook @ line 14, column 12.
Facebook facebook = new FacebookTemplate(token.accessToken.accessToken)
^
C:\Users\Shreshtt\workspace\groovypublish\grails-app\services\groovypublish\FacebookAuthService.groovy: 14: unable to resolve class FacebookTemplate @ line 14, column 23.
Facebook facebook = new FacebookTemplate(token.accessToken.accessToken)
^
C:\Users\Shreshtt\workspace\groovypublish\grails-app\services\groovypublish\FacebookAuthService.groovy: 15: unable to resolve class FacebookProfile @ line 15, column 19.
FacebookProfile fbProfile = facebook.userOperations().userProfile
^
3 errors