인스타그램 API 사용

19320 단어 JavaScriptInstagram
인스타그램 기고문 일람표를 보여주고 싶어 인스타그램 그래프 API로 표시했다.

차리다


인스타그램 계정을 비즈니스 계정으로 바꾸다.(APP만 사용할 수 있나요?)
[설정] - [계정] - [전문 계정으로 전환]
페이스북에 페이지를 만들다.
[설정 및 프라이버시] - [설정] - [페이지 만들기](바닥글)

인스타그램 계정을 페이스북에 링크


페이스북 페이지 설정을 통해 인스타그램 계정을 연결합니다.
[페이지 설정] - [Instagram] - [링크 계정]

페이스북 for 개발자로 응용 프로그램 만들기


계정을 만들고 프로그램을 만듭니다.
facebook for developers

앱 제품에 인스타그램 추가


[제품] - [인스타그램]

액세스 토큰 만들기


차트 API 리소스 매니저를 표시합니다.

페이스북 애플리케이션, 사용자 또는 페이지, 액세스 라이센스를 설정합니다.

Facebook 응용 프로그램 설정 만든 응용 프로그램
사용자 또는 페이지에 사용자 토큰을 설정합니다.
액세스 권한
pages_show_list
instagram_basic
설정
(사진에 있음) 아래에 없어도 괜찮아요.
business_management
instagram_manage_comments
instagram_manage_insights
[Generate Access Token] 버튼을 클릭하여 액세스 토큰을 만듭니다.

인스타그램 User ID 조사


차트 API Explorer에 me/accounts?fields=id를 입력하고 전송 버튼을 클릭합니다.

계속해서 얻은 id 입력000000000000000?fields=instagram_business_account을 사용하고 발송 단추를 누르세요.

Instagram User ID가 표시됩니다.

이루어지다


페이지가 표시될 때 자신의 투고 일람표를 평평하게 보여 주십시오.

index.html
<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Instagram</title>
</head>

<body>

  <div class="container"></div>

  <script src="./app.js"></script>
</body>

</html>
app.js
import style from './style.scss';

const apiUrl = 'https://graph.facebook.com/v7.0/';
const igUserId = '10000000000000000';
const accessToken = 'トークンを入力';

document.addEventListener('DOMContentLoaded', () => {
  _getMyMeida();
});

function _getMyMeida(url = '') {
  // Get the Instagram Business Account's Media Objects
  const api = url || `${apiUrl}${igUserId}/media?fields=caption,children,comments_count,id,like_count,media_type,media_url,thumbnail_url&access_token=${accessToken}`;

  fetch(api)
    .then(response => {
      return response.json();
    })
    .then(data => {
      if (data.data !== undefined) {
        _createTile(data.data, (url === '') ? true : false);

        if (data.paging !== undefined && data.paging.next !== undefined) {
          _getMyMeida(data.paging.next);
        }
      }
    })
    .catch(error => {
      console.log(error);
    });
}

function _createTile(media, insert) {
  const container = document.querySelector('.container');
  const fragment = document.createDocumentFragment();

  media.forEach((item, i) => {
    const tile = document.createElement('div')
    tile.classList.add('tile');

    const figure = document.createElement('figure');
    const img = document.createElement('img');
    img.src = item.thumbnail_url || item.media_url;
    figure.appendChild(img);

    const caption = document.createElement('figcaption');
    caption.textContent = item.caption;
    figure.appendChild(caption);
    tile.appendChild(figure);

    fragment.appendChild(tile);
  });

  if (insert) {
    container.insertBefore(fragment, null);
  } else {
    container.appendChild(fragment);
  }
}
style.scss
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  height: 100vh;
  background-image: linear-gradient(to left bottom, #fa709a 0%, #fee140 100%);
}

.container {
  display: flex;
  flex-wrap: wrap;

  .tile {
    flex: 0 0 calc(100% / 5);
    position: relative;
    transition: transform 0.2s linear;
    &:hover {
      transform: scale(1.5);
      z-index: 1;
    }

    &::before {
      display: block;
      content: "";
      padding-top: 100%;
    }

    figure {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
    }
    img {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
    figcaption {
      position: absolute;
      left: 2%;
      bottom: 2%;
      width: 96%;
      height: 3em;
      padding: 0 5px;
      background: rgba(80, 80, 80, 0.7);
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 2;
      overflow: hidden;
      text-overflow: ellipsis;
      color: #f0f0f0;
      font-size: 12px;
      line-height: 1.5;
    }
  }
}
github
h23k/instagram-embed

좋은 웹페이지 즐겨찾기