본문 바로가기
Programming/HTML & CSS & JavaScript

Instagram API 를 이용하여 게시물 가져오기

by yoon9i 2023. 12. 20.
   <!-- ------------------------------- instagram ------------------------------- -->
    <div class="m_br"></div>
    <script src="/absolute/path/to/instafeed.min.js" type="text/html"></script>
    <div id="instagram_area">
      <div class="instagram_title">
        <h2 align="center">Instagram</h2>
      </div>
      <div class="instagram_contents" align="center">
        <div id="instagram-feed"></div>
        <button id="instagram-button">Instagram 에서 전체 게시물 보기</button>
        <script>
          // 사용자의 액세스 토큰을 여기에 입력
          var accessToken =
            "";

          // Instagram Graph API 엔드포인트
          var apiUrl =
            accessToken;

          // Instagram 게시물을 가져오고 표시하는 함수
          function fetchInstagramPosts() {
            $.ajax({
              url: apiUrl,
              method: "GET",
              dataType: "JSON",
              success: function (response) {
                console.log(response);

                var maxPosts = Math.min(response.data.length, 9); // 최대 포스트 수 제한
                var instaFeed = $("#instagram-feed");

                for (var i = 0; i < maxPosts; i += 3) {
                  var $instaRow = $("<div>").addClass("insta-row");

                  for (var j = 0; j < 3 && i + j < maxPosts; j++) {
                    var mediaUrl = response.data[i + j].media_url;
                    var permalink = response.data[i + j]?.permalink;

                    // 이미지에 링크 추가
                    var $imageLink = $("<a>")
                      .attr("href", permalink)
                      .attr("target", "_blank");

                    var $imageContainer = $("<div>")
                      .addClass("insta-image-container")
                      .append(
                        $imageLink.append($("<img>").attr("src", mediaUrl))
                      );

                    $imageContainer.click(function () {
                      window.open(permalink, "_blank");
                    });

                    $instaRow.append($imageContainer);
                  }

                  instaFeed.append($instaRow);
                }
              },
              error: function (xhr, status, error) {
                console.error(xhr.responseText);
              },
            });
          }

          // 페이지 로드 시 Instagram 게시물 가져오기
          fetchInstagramPosts();

          // 인스타그램 페이지로 이동하는 버튼 클릭 이벤트 처리
          $("#instagram-button").on("click", function () {
            window.open("https://www.instagram.com/gogumawedding/", "_blank");
          });
        </script>
      </div>
      <div id="instagram_contents_bottom"></div>
    </div>
    <div class="m_br"></div>

이렇게 작성하니 모든 게시물들이 하나의 게시물로 이동하는 현상을 발생한다... 수정필요하겠네 ㅠ

수정된것도 올라와있으니 참고할것.(맞는지 모르겠다 ㅠ)