관련 지식
javascript, node.js, instagram-web-api2, instagram

페이스북, 구글, 네이버와 같은 서비스의 API를 사용하려고 하면 OAuth 인증등의 절차 또는 API를 사용할 어플리케이션을 등록하는 과정등을 거쳐야 합니다. 그런데 아이디와 비밀번호로 인스타그램 API를 다루는, 매우 직관적이고 쉬우면서 괜찮은 기능을 제공하는 패키지가 있어서 매우 간단하게 소개하려고 합니다.

버전업을 하며 소스를 분리한것 같은데 Readme.md의 installation 항목이 예전 내용으로 있습니다. 아래에 적은 방법으로 설치해야 최신 버전이 설치됩니다.

경로 : https://www.npmjs.com/package/instagram-web-api2
설치 : npm install instagram-web-api2
현재버전 : 2.0.3

사용방법은 정말 간단합니다.

  1. const Instagram = require('instagram-web-api2')
  2. const client = new Instagram({ username : '인스타그램 로그인 아이디', password : '비밀번호'});
  3. await client.login();

자기 자신의 프로필 정보는 getProfile() 함수로 가져올수 있습니다.

  1. let profile = await client.getProfile();
  2. console.log(profile);

특정사용자의 팔로워나 팔로잉 정보를 가져오고 싶을때는 getFollowers() 과 getFollowings() 함수를 사용하면 됩니다. 그런데 각 함수에서 필요로하는 userid 값은 사용자가 직관적으로 알기가 어렵습니다. 따라서 getUserByUsername() 함수로 사용자 정보를 받아와서 userid를 알아낼수가 있습니다. 예를들어 자기 자신의 정보는 아래와 같이 알아낼수 있습니다.

  1. let instagram = await client.getUserByUsername({ username: profile.username });

자기 자신의 팔로워와 팔로잉은 아래와 같이 호출합니다.

  1. let followers = await client.getFollowers({ userId: instagram.id });
  2. let followings = await client.getFollowings({ userId: instagram.id });

팔로워와 팔로잉은 20건씩 가져오지만, first 값을 부여하면 최대 50건까지 한번에 가져올수 있습니다. 100을 지정해도 50건이 최대입니다.

  1. let followers = await client.getFollowers({ userId: instagram.id, first:50});
  2. let followings = await client.getFollowings({ userId: instagram.id, first:50});

가져온 데이터의 end_cursor 값을 after 값으로 전달하면 다음 페이지에 해당하는 데이터를 가져올수도 있습니다.

getUserByUsername() 함수는 많은 정보를 담고 있습니다. 자신의 소개글, 프로필 사진 URL등외에 타임라인 정보도 있습니다. 데이터 형태는 위에서 본 팔로워와 비슷하고 동일하게 has_next_pageend_cursor 값도 있습니다.

  1. console.log(user.edge_owner_to_timeline_media);

인스타그램의 대부분의 기능을 제공하고 있고 정말 쉬운 인터페이스를 가졌기 때문에 위 내용정도만 테스트 해보면, 나머지는 쉽게 따라하실수 있을것 입니다. 인스타그램 API 를 간단하게 사용하실 분들은 이 패키지를 꼭 써보시기 바랍니다.