Очень поучительно. Я обнаружил, что 3.0.0.M1 находится в репозитории Spring Milestones, поэтому мне нужно было сначала добавить его в мой pom:

ичок в Spring Framework и хотел попробовать Spring Social, чтобы создать простое веб-приложение, которое получает данные из Facebook. За этим я следил за официальными представителями Spring SocialsРуководство по началу работы" называется "Доступ к данным Facebook».

Первая проблема, с которой я столкнулся, заключалась в том, что версия Spring Social2.0.3.RELEASEЭто последняя официальная версия Spring Social, которая не поддерживает версию 2.8 API Facebook (и поэтому выдает следующую ошибку: "(# 12) био поле устарело для версий v2.8 и выше"). Поскольку вчера я создал приложение Facebook на developers.facebook.com, похоже, у меня нет доступа к предыдущим версиям API.

Я искал в Google решение и нашел эту версию3.0.0.M1 кажется, доступно в репозитории maven, который должен решить эту проблему. Но когда я изменил конфигурацию в моем .pom-файле, чтобы использовать эту версию, компилятор не может найти классConnectionRepository больше. Собственно весь пакетorg.springframework.social.connect кажется, отсутствует.

Код, который я скопировал из руководства (https://spring.io/guides/gs/accessing-facebook/) выглядит следующим образом:

import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.PagedList;
import org.springframework.social.facebook.api.Post;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
impor,t org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class HelloController {

    private Facebook facebook;
    private ConnectionRepository connectionRepository;

    public HelloController(Facebook facebook, ConnectionRepository connectionRepository) {
        this.facebook = facebook;
        this.connectionRepository = connectionRepository;
    }

    @GetMapping
    public String helloFacebook(Model model) {
        if (connectionRepository.findPrimaryConnection(Facebook.class) == null) {
            return "redirect:/connect/facebook";
        }

        model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile());
        PagedList<Post> feed = facebook.feedOperations().getFeed();
        model.addAttribute("feed", feed);
        return "hello";
    }

}

Был ли ConnectionRepository устаревшим и теперь удален? Если это так, я должен использовать что-то еще вместо этого? Или я что-то упустил?

Удаляя все ссылки на ConnectionRepository, я получаю следующую ошибку при запуске приложения:

org.springframework.beans.factory.BeanCreationException: Ошибка при создании компонента с именем 'helloController': не удалось разрешить объявление объявленных конструкторов для класса. вложенным исключением является java.lang.NoClassDefFoundError: org / springframework / social / ApiBinding

В этом случае код выглядит следующим образом:

package hello;

import org.springframework.social.facebook.api.Facebook;
import org.springframework.social.facebook.api.PagedList;
import org.springframework.social.facebook.api.Post;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class HelloController {

    private Facebook facebook;

    public HelloController(Facebook facebook) {
        this.facebook = facebook;

    }

    @GetMapping
    public String helloFacebook(Model model) {


        model.addAttribute("facebookProfile", facebook.userOperations().getUserProfile());
        PagedList<Post> feed = facebook.feedOperations().getFeed();
        model.addAttribute("feed", feed);
        return "hello";
    }

}

Ответы на вопрос(1)

Ваш ответ на вопрос