没有从Facebook OAuth获得名字,姓氏和姓氏

时间:2015-09-23 11:59:46

标签: java spring-security facebook-oauth spring-social spring-social-facebook

最近,我继承了另一个使用Spring Social和Spring Security对用户进行身份验证的开发人员的spring应用程序。

因为编写它的开发人员想要在Facebook上停止他的App Id,我创建了一个新的。这就是问题开始的时候。

我将app id和app secret更改为我的新密码,突然注册,Facebook停止提供名字,姓氏和电子邮件地址。

一开始我认为可能是因为我的新Facebook用户也是新应用ID的所有者,但没有。该应用程序仍然使用旧的应用程序ID运行高效,当我向用户注册时,会提供上述属性。

我在这里缺少什么?在developers.facebook.com上定义我的Facebook应用程序时,我是否需要切换一些神奇的东西?

新应用程序已激活并可供公众使用。设置了站点URL和应用程序域以及有效的OAuth重定向URI。

我当前正试图在localhost上测试应用程序,因此在Facebook应用程序设置中设置了域名。

如果我使用org.springframework.social.connect.UserProfilegetName()的实例会返回用户的名称,但getFirstName()getLastName()getEmail()都会返回{{1} }}

1 个答案:

答案 0 :(得分:0)

问题确实是旧Facebook应用程序使用的Graph API版本低于2,并且与spring-social-facebook软件包版本1.1.0完美配合。

如果想要创建一个新的Facebook应用程序,则不再可以使用Graph API 1.x来完成它。

解决方案是将spring-social-facebook包升级到版本2.0.2并从

更改以下代码
@Bean
public ProviderSignInUtils providerSignInUtils() {
    return new ProviderSignInUtils();
}

@Bean
public ProviderSignInUtils providerSignInUtils(
        final ConnectionFactoryLocator connectionFactoryLocator,
        final UsersConnectionRepository usersConnectionRepository) {
    return new ProviderSignInUtils(connectionFactoryLocator,
            usersConnectionRepository);
}