0

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

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

我将应用程序 ID 和应用程序密码更改为我的新应用程序 ID,突然注册后,Facebook 停止提供名字、姓氏和电子邮件地址。

一开始我认为这可能是因为我的新 Facebook 用户也是新应用程序 ID 的所有者,但不是。该应用程序仍然使用旧的应用程序 ID 运行高效,当我与我的用户注册时,上述属性已交付。

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

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

我正在尝试测试应用程序,localhostFacebook 应用程序设置中设置的域也是如此。

但是,如果我使用,实例org.springframework.social.connect.UserProfile会返回用户的名称,并且都在返回。getName()getFirstName()getLastName()getEmail()null

4

1 回答 1

0

问题确实在于旧的 Facebook 应用程序使用低于 2 的 Graph API 版本,并且它与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);
}
于 2015-09-23T18:25:19.890 回答