最近,我继承了另一个使用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.UserProfile
,getName()
的实例会返回用户的名称,但getFirstName()
,getLastName()
和getEmail()
都会返回{{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);
}