Неверный URL-адрес профиля Spring Social Facebook

Я настроил весеннюю социальную сеть для Facebook, а также весеннюю социальную аутентификацию в своем приложении с пользовательскими UsersConnectionRepository и ConnectionRepository.

Файл конфигурации

@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

Если я открою эту ссылку, браузер скажет

введите здесь описание изображения

Файл 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) {...}

Что я делаю не так?

РЕШЕНИЕ

обновление библиотеки FB весной решило проблему.

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

person Faraj Farook    schedule 10.05.2015    source источник


Ответы (1)


Проверьте, используете ли вы самую последнюю версию Spring Social. В настоящее время profileUrl должен иметь схему

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

где {app_scoped_user_id} — фактический идентификатор пользователя в приложении.

Видеть

person Tobi    schedule 11.05.2015
comment
Спасибо за ответ. Вы правы, моя библиотека ФБ в соцсетях 1.1.1.RELEASE. По умолчанию последняя версия весенней загрузки (1.2.3.RELEASE) включает старую версию социальной библиотеки. :/ - person Faraj Farook; 11.05.2015
comment
Я хочу сказать, что этот новый формат URL-адреса фактически требует, чтобы вы вошли в Facebook, чтобы просмотреть целевой профиль. В то время как для тех, кто ищет общедоступный URL-адрес профиля, который неt require log in, its по-прежнему использует старые форматы, такие как facebook.com/JohnDoe или facebook.com/profile.php?id=24353623 - person Spark8006; 26.06.2015