본문 바로가기

개발/기타

인스타그램 API 연동하기(feat. 내 홈페이지에) #3

반응형

 

2020/01/06 - [개발/기타] - 인스타그램 API 연동하기(feat. 내 홈페이지에) #1

2020/02/18 - [개발/기타] - 인스타그램 API 연동하기(feat. 내 홈페이지에) #2

 

 

앞에 두 게시글에 이어 이번에는 내 홈페이지에 PHP와 jQuery를 이용해서 인스타그램 미디어를 불러와 보도록 하겠습니다.

 

 

 

 

기본 파일 준비

우선 인스타그램을 연동할 페이지에 jQuery를 실행할 수 있게 파일을 불러와야겠죠?

예를 들어 아래와 같은 html 기본 뼈대를 준비하고,

<!doctype html>
<html lang="ko">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
  <title>사과농장에 인스타그램 불러오기</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> ➊
</head>
<body>
  
</body>
</html>

<head>와 </head> 태그 사이에 jQuery를 불러오는 코드를 넣습니다.

➊ 부분이 CDN으로 jQuery를 불러오는 코드입니다.

 

이 파일을 index.php로 저장!!

 

자, 그럼 index.php는 준비가 됐으니까 이제 인스타 그럼 API와 통신하는 PHP파일을 만들어볼까요.

파일 이름은.. 음음.. instagram.php로? 🤨

빈 파일을 생성하고 아래 코드를 넣어줄게요.

 

<?php
$post = array (
  'fields' => 'id,media_type,media_url,permalink,thumbnail_url,username,caption', ➊
  'access_token' => 'AQD9seCCm7...', ➋
);
$url = "https://graph.instagram.com/0000000000000000/media?".http_build_query($post); ➌
try {
  $curl_connection = curl_init($url);
  curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
  curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
  $result = curl_exec($curl_connection);
  curl_close($curl_connection);
} catch(Exception $e) {
  return $e->getMessage();
}

$data = json_decode($result, true);
$image_array= array();

foreach ($data['data'] as $key => $row) {
  $code = $row['id'];  $username = $row['username'];
  $type = $row['media_type'];
  $link = $row['permalink'];
  $thum = ($type === 'VIDEO') ? $row['thumbnail_url'] : $row['media_url'];
  $text = $row['caption'];
  array_push($image_array, array('username'=>$username, 'link'=>$link, 'thum'=>$thum, 'text'=>$text));
}

echo json_encode($image_array);
?>

➊ 인스타그램 API에서 받아올 데이터 종류

  • id : 인스타그램 미디어의 고유 번호
  • media_type : 인스타그램 미디어의 종류. 이미지인지 비디오인지
  • media_url : 인스타그램 미디어(사진)의 주소
  • permalink : 인스타그램 미디어 링크 주소
  • thumbnail_url : 인스타그램 썸네일 이미지(동영상의 경우는 사진이 아니니깐 썸네일을 줍니다.)
  • username : 인스타그램 사용자 이름
  • caption : 인스타그램 미디어 내용

➋ #2편 마지막에서 발급 받은 토큰 (AQD9seCCm7... 이 부분에 넣어 줍니다.)

➌ #2편 마지막에서 토큰과 함께 받은 user_id 값이구요.

 

 

 

instagram.php가 준비됐으니 index.php에서 jQuery를 이용해 사진을 불러와 보겠습니다.

처음에 만든 index.php 파일을 열고 </body> 태그 바로 위에 코드를 넣습니다.

(jQuery 부르는 코드 밑에다가 넣어주세요.)

<script>
$(document).ready(function() {
  $.ajax({
    url: "instagram.php",
    success: function (response) {
      var list = '';
      var result = JSON.parse(response);
      $.each(result, function(key, val) {
        /* 
        val.username : 사용자 이름 ➌
        val.link : 인스타그램 게시물 링크 주소 ➌
        val.thum : 썸네일이미지 주소 ➌
        vak.text : 인스타그램 게시물 내용 ➌
        */
        list += '<div class="instagram">'+
        '<div class="instagram-thum" style="background:url('+val.thum+') no-repeat top center;"></div></a>'+
        '</div>';
      });
      $('.playon-instagarm').append(list);
    }
  });
});
</script>

 

 

 

 

그리고 불러온 인스타그램 이미지들을 꾸며줄 CSS를 추가해 보겠습니다.

</head> 태그 바로 위에 CSS를 넣어 볼게요.

  <style>
    body {
      background: #fafafa;
    }

    .playon-instagarm {
      width: 800px;
      margin: 0 auto;
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
    }

    .instagram {
      width: 250px;
      margin-bottom: 30px;
    }

    .instagram-thum {
      width:250px;
      height:250px;
      background-size:cover;
    }
  </style>

 

 

 

 

그담에 마지막으로 인스타그램 내용이 들어갈 태그를 만들어 줍니다.

<body></body> 사이에 아래 태그를 넣습니다.

<div class="playon-instagarm"></div>

 

 

 

 

아래는 index.php의 최종 결과물이에요.

<!doctype html>
<html lang="ko">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
  <title>사과농장에 인스타그램 불러오기</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <style> ➊
    body {
      background: #fafafa;
    }

    .playon-instagarm {
      width: 800px;
      margin: 0 auto;
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
    }

    .instagram {
      width: 250px;
      margin-bottom: 30px;
    }

    .instagram-thum {
      width:250px;
      height:250px;
      background-size:cover;
    }
  </style>
</head>
<body>

<div class="playon-instagarm"></div> ➋

<script>
$(document).ready(function() {
  $.ajax({
    url: "instagram.php",
    success: function (response) {
      var list = '';
      var result = JSON.parse(response);
      $.each(result, function(key, val) {
        /* 
        val.username : 사용자 이름 ➌
        val.link : 인스타그램 게시물 링크 주소 ➌
        val.thum : 썸네일이미지 주소 ➌
        vak.text : 인스타그램 게시물 내용 ➌
        */
        list += '<div class="instagram">'+
        '<div class="instagram-thum" style="background:url('+val.thum+') no-repeat top center;"></div></a>'+
        '</div>';
      });
      $('.playon-instagarm').append(list);
    }
  });
});
</script>

</body>
</html>

➊ 불러온 사진을 꾸며주는 스타일시트 부분

➋ 여기다가 사진을 넣어줍니다.

➌ 요건 인스타그램 API에서 가져온 인스타그램 미디어 정보들

 

 

 

 

PHP파일은 컴퓨터에서 실행되지 않으니 PHP가 실행될 수 있도록 저장하고서 두 개의 파일을 서버에 올려줍니다.

저는 루트 디렉터리에 instagram 폴더를 만들어서 거기다가 업로드하겠습니다.

그리고 브라우저에서 https://playon.tistory.com/instagram 으로 딱!! 이동하면~~~ 쟌쟌쟌!!

 

 

Profit!! 🥳

 

아.. 개인적인 사진이라 모자이크 했더니 뭔가 이상하다;;;; 😳

 

 

 

반응형