Spring 社交 Facebook 个人资料 URL 不正确

Spring Social Facebook Profile URL incorrect

我为 facebook 配置了 spring 社交,还在我的应用程序中使用自定义 UsersConnectionRepositoryConnectionRepository.

配置了 spring 社交身份验证

配置文件

@Configuration
public class SocialConfig extends SocialConfigurerAdapter{
    ...    
    @Override
    public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator factoryLocator) {
        SecUsersConnectionRepository repository = new SecUsersConnectionRepository(factoryLocator, userRepository, userConnectionRepository);
        return repository;
    }
    ...
}

连接存储库实施

public class SecConnectionRepository implements ConnectionRepository {
    ...
 @Override
    public void addConnection(Connection<?> connection) {
        UserConnection userConnection = userRepository.findConnectionBy(user, connection.getKey().getProviderId(), connection.getKey().getProviderUserId());
        if (userConnection == null) {
            ...
            userConnection.setProviderId(data.getProviderId());
            userConnection.setProviderUserId(data.getProviderUserId());
            userConnection.setDisplayName(data.getDisplayName());
            userConnection.setProfileUrl(data.getProfileUrl());
            userConnection.setImageUrl(data.getImageUrl());
            ...
        } else {
            throw new DuplicateConnectionException(connection.getKey());
        }
    }

当我添加我的 facebook 登录时,Connect<A> 接口对象获取 profileUrl,但是 URL 是这种格式

https://www.facebook.com/profile.php?id=XXXXXXXXXXXXXXX&_rdr

如果我打开这个 link 浏览器会显示

Gradle 文件

buildscript {
    repositories {
        maven { url "https://repo.spring.io/libs-release" }
        ... }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")
    }
}
apply plugin: 'java'
...
jar {...}
repositories {
    ...
    maven { url "https://repo.spring.io/libs-release" } 
}
dependencies {
    ...
    compile("org.springframework.social:spring-social-facebook")
    compile("org.springframework.social:spring-social-security")
    ... }
task wrapper(type: Wrapper) {...}

我做错了什么?

解决方案

更新 spring 中的 FB 库解决了问题。

compile("org.springframework.social:spring-social-facebook:2.0.1.RELEASE")

检查您使用的是否是最新版本的 Spring Social。 profileUrl 现在应该有 scheme

https://www.facebook.com/app_scoped_user_id/{app_scoped_user_id}/

其中 {app_scoped_user_id} 是应用范围内的实际用户 ID。