Simple Instagram Basic Display API Client
A simple Javascript client for the Instagram Basic Display API.
Requirements
(Instagram Basic Display API)
Get started
<script type="text/javascript" src="path/to/instagram-api-js-client.js"></script>
<script type="text/javascript">
const Instagram = window['instagram-api-js-client'].default
var instagram = new Instagram('VALID_TOKEN')
...
</script>
$ npm install instagram-api-js-client
import { Instagram } from 'instagram-api-js-client'
var instagram = new Instagram('VALID_TOKEN')
...
Get access token
Instagram.getAuthorizationUrl({
appId: 'appId',
redirectUri: 'redirectUri',
})
Get the url from the console and authorize the app. Then get the code parameter from the redirected url and use it in the following call.
Instagram.getToken({
appId: 'appId',
appSecret: 'appSecret',
redirectUri: 'redirectUri',
code: 'code',
})
The user id, a short-Lived token and the long-lived token will be displayed in the console. Use this last one from now on.
About token expiration
Public accounts long-lived tokens can be refreshed by using the refreshToken
method. Private accounts cannot be refreshed and must grant access again after 60 days (See more)
Basic Usage
Custom options
-
limit
: Limit api returned media on each call (default: 99)
-
fetchChildren
: Add edge children to media. When false, children will have to be retrieved by another call. (default: true)
-
allowUnsupportedType
: Keep returned objects that cannot be mapped into known classes (Image, Video, Album). (default: false)
-
flatten
: Album media is flattened to its children (default: false)
var instagram = new Instagram(
'VALID_TOKEN',
{
limit: 2,
fetchChildren: true,
allowUnsupportedType: true,
flatten: false,
}
)
instagram.setOptions({
limit: 2,
fetchChildren: true,
allowUnsupportedType: true,
flatten: false,
})
Example
const user = await instagram.fetchSelf()
console.log('user', user)
const token = instagram
.refreshToken()
.then((token) => console.log('token', token))
.catch((error) => {})
const fetchMedia = await instagram.fetchMedia()
console.log('fetchMedia', fetchMedia)
const media = await instagram.media()
console.log('media', media)
var iterateMedia = []
for await (const item of instagram.mediaIterator()) {
iterateMedia.push(item)
}
console.log('iterateMedia', iterateMedia)
const media = await instagram.media()
const flattened = instagram.flatMedia(media)
console.log('flattened', flattened)
const withoutChildren = await instagram.media()
const withChildren = await instagram.media()
for (const item of withChildren) {
if (item.mediaType === 'CAROUSEL_ALBUM') {
const children = await instagram.fetchChildren(item.id)
item.setChildren(children.data)
}
}
console.log('withoutChildren', withoutChildren)
console.log('withChildren', withChildren)