본문 바로가기

Spring Boot

[Springboot] Instagram 사진 올리기 연동 구현(인스타그램 + java)

반응형

1. 다음 종속성을 pom.xml 파일에 추가합니다.

<dependency>
    <groupId>org.springframework.social</groupId>
    <artifactId>spring-social-instagram</artifactId>
    <version>1.1.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-social-instagram</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

 

2. application.properties 파일에 Instagram Client ID 및 Client Secret을 추가합니다.

spring.social.instagram.app-id=YOUR_CLIENT_ID
spring.social.instagram.app-secret=YOUR_CLIENT_SECRET

 

3. Instagram Connect 컨트롤러 구현.

import org.springframework.social.connect.ConnectionFactoryLocator;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.connect.web.ConnectController;
import org.springframework.stereotype.Controller;

@Controller
public class InstagramConnectController extends ConnectController {

    public InstagramConnectController(ConnectionFactoryLocator connectionFactoryLocator,
                                      ConnectionRepository connectionRepository) {
        super(connectionFactoryLocator, connectionRepository);
    }

}

 

4. 사용자를 대신하여 사진을 게시할 수 있도록 애플리케이션 권한 부여

import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionRepository;
import org.springframework.social.instagram.api.Instagram;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import java.io.IOException;

@Controller
public class InstagramPostController {

    private final ConnectionRepository connectionRepository;

    public InstagramPostController(ConnectionRepository connectionRepository) {
        this.connectionRepository = connectionRepository;
    }

    @PostMapping("/post-instagram")
    public String postInstagram(@RequestParam("image") MultipartFile image,
                                RedirectAttributes redirectAttributes) throws IOException {
        Connection<Instagram> connection = connectionRepository.findPrimaryConnection(Instagram.class);
        if (connection == null) {
            redirectAttributes.addFlashAttribute("message", "Please connect to Instagram first");
            return "redirect:/connect/instagram";
        }
        Instagram instagram = connection.getApi();
        instagram.mediaOperations().upload(image.getBytes(), "Description");
        redirectAttributes.addFlashAttribute("message", "Post Successful!");
        return "redirect:/";
    }

}
반응형