0

В последнее время я унаследовал весеннее приложение от другого разработчика, который использует Spring Social и Spring Security для аутентификации пользователя.Не получая имя, фамилию и фамилию от Facebook OAuth

Поскольку разработчик, который его написал, хочет прекратить использовать свой идентификатор приложения на Facebook, я создал новый. И вот когда проблема началась.

Я поменял приложение id и приложение на свои новые, и вдруг, подписавшись, Facebook прекратил доставку имени, фамилии и адреса электронной почты.

В начале я подумал, что это может быть из-за моего нового пользователя Facebook, который также является владельцем нового идентификатора приложения, но нет. Приложение по-прежнему работает с старым идентификатором приложения, и когда я подписываюсь с моим пользователем, выдается вышеупомянутые атрибуты.

Что мне здесь не хватает? Должен ли я переключать что-то волшебное при определении моего приложения Facebook на developers.facebook.com?

Новое приложение активировано и доступно для широкой публики. Домены URL сайта и приложения установлены так же, как и действительные URI перенаправления OAuth.

Я пытаюсь проверить приложение на localhost, а также домены, установленные в настройках приложения Facebook.

Экземпляр org.springframework.social.connect.UserProfile возвращает имя пользователя, если я использую getName(), однако getFirstName(), getLastName() и getEmail() все возвращаются null.

+0

ли вы новое приложение имеет разрешение на просмотр имя, фамилия и адрес электронной почты. Это можно проверить в меню «Состояние и просмотр» в developers.facebook.com под вашим приложением. – shazin

+0

Да, это все зеленое, живое и доступное для всех пользователей (электронная почта, public_profile и user_friends). – Jagger

+0

@shazin Единственное, что возвращает экземпляр 'org.springframework.social.connect.UserProfile', это имя (метод' getName() '). Другие методы получения электронной почты, имени и фамилии возвращают null. – Jagger

ответ

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); 
} 
Смежные вопросы