gpt4 book ai didi

facebook - 如何从 Grails 中的 Spring Security 的 Facebook 身份验证中获取 Facebook 用户名、电子邮件、电话号码等

转载 作者:行者123 更新时间:2023-12-02 19:50:06 25 4
gpt4 key购买 nike

我正在使用Spring Security Core Plugin用于身份验证目的和 Facebook Authentication for Spring Security用于 Facebook 登录目的。我的 FB 登录与 Spring Security 插件配合良好。但我对此有一些问题。如何获取 Facebook 用户的用户名、电子邮件、电话号码等,以便将其保存到我的数据库中。

这是我的 Spring Security 核心 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 用户个人资料图片)等。现在用户名的保存方式如下 facebook_100003641451723。我想要用户的真实姓名,以便我可以将其保存到我的真实姓名字段中。知道我该怎么做吗?

更新:

我在那里找到了一个解决方案 Grails Facebook Login using spring security - how to know logged in user name

但我不知道我把这段代码放在哪里......

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

最佳答案

您必须将其放入 FacebookAuthService 的实现中。

只需创建具有此类名称的服务,并使用此代码(或类似代码)添加方法onCreate。并且不要忘记添加 Spring Social Facebook 作为依赖项

关于facebook - 如何从 Grails 中的 Spring Security 的 Facebook 身份验证中获取 Facebook 用户名、电子邮件、电话号码等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17586188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com