{
"error": {
"message": "Invalid OAuth access token.",
"type": "OAuthException",
"code": 190,
"fbtrace_id": "A09ojozMQhlajcJFNF2f401"
}
}
{
"error": {
"message": "Missing redirect_uri parameter.",
"type": "OAuthException",
"code": 191,
"fbtrace_id": "AW9vPfbSbHe_FOhMT-58xOi"
}
}
когда ввожу вот это получаю https://graph.facebook.com/oauth/access_token
? Client_id = {ваш-приложение-ID}
& Client_secret = {ваш-приложение-секрет}
& Grant_type = client_credentials
"message": "Missing redirect_uri parameter.",
<script>
var token = 'access_token', // ваш токен
userid = 12345678910, // id пользователя
num_photos = 10; // Количество фотографий, которые вы хотите получить
$.ajax({
url: 'https://api.instagram.com/v1/users/' + userid + '/media/recent',
dataType: 'jsonp',
type: 'GET',
data: {access_token: token, count: num_photos},
success: function(data){
console.log(data);
for( x in data.data ){
$('#av_instafeed').append('<li><img src="'+data.data[x].images.low_resolution.url+'"></li>');
// data.data[x].link - URL поста в Инстаграме
// data.data[x].images.standard_resolution.url - URL изображений 612х612
}
},
error: function(data){
console.log(data); // отправим сообщение в консоль, если появятся ошибки
}
});
</script>
Base URLs
api.instagram.com — for getting Instagram User Access Tokens
graph.instagram.com — for getting Instagram user profiles and media
GET /me/media?fields={fields}&access_token={access-token}
curl -X GET \ 'https://graph.instagram.com/me/media?fields=id,caption&access_token=IGQVJ...'
{ "data": [ { "id": "17895695668004550", "caption": "" }, { "id": "17899305451014820", "caption": "" }, { "id": "17896450804038745", "caption": "" }, { "id": "17881042411086627", "caption": "" } ], "paging": { "cursors": { "after": "MTAxN...", "before": "NDMyN..." }, "next": "https://graph.faceb..." } }
GET /{media-id}?fields={fields}&access_token={access-token}
curl -X GET \ 'https://graph.instagram.com/17895695668004550?fields=id,media_type,media_url,username,timestamp&access_token=IGQVJ...'
{ "id": "17895695668004550", "media_type": "IMAGE", "media_url": "https://fb-s-b-a.akamaihd.net/...", "username": "jayposiris" "timestamp": "2017-08-31T18:10:00+0000" }
caption - подпись к изображению или видео. Для медиафайлов в альбомах не возвращается.
id - ID медиафайла.
media_type - тип медиафайла. Возможные варианты: IMAGE, VIDEO, CAROUSEL_ALBUM.
media_url - URL медиафайла.
permalink - постоянный URL медиафайла.
thumbnail_url - URL миниатюры медиафайла. Доступно только для типа VIDEO.
timestamp - дата публикации медиафайла в формате ISO 8601.
username - имя пользователя, опубликовавшего медиафайл.
Short-Lived Access Tokens
Short-lived access tokens are valid for 1 hour, but can be exchanged for long-lived tokens. To get a short-lived access token, implement the Authorization Window into your app. After the app user authenticates their identity through the window, we will redirect the user back to your app and include an Authorization Code, which you can then exchange for a short-lived access token.
Long-Lived Access Tokens
Long-lived tokens are valid for 60 days and can be refreshed before they expire. Short-lived access tokens can be exchanged for long-lived access tokens through the GET /access_token endpoint. Once you have a long-lived access token you can refresh it before it expires through the GET /refresh_access_token endpoint.
GET https://graph.instagram.com/access_token
?grant_type=ig_exchange_token
&client_secret={instagram-app-secret}
&access_token={short-lived-access-token}
curl -X GET \
'https://graph.instagram.com/access_token?grant_type=ig_exchange_token&&client_secret=eb87G...&access_token=IGQVJ...'
{
"access_token": "lZAfb2dhVW...",
"token_type": "bearer",
"expires_in": 5183944
}
GET https://graph.instagram.com/refresh_access_token
?grant_type=ig_refresh_token
&access_token={long-lived-access-token}
curl -X GET \
'https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&&access_token=F4RVB...'
{
"access_token": "c3oxd...",
"token_type": "bearer",
"expires_in": 5183944
}
<?
/*
* создаем новое подключение к API Instagram, о том, как получить $token, написано выше;
*/
$token = 'IGQV'; long token
setInterval(function(){
$instagram_cnct = curl_init(); // инициализация cURL подключения
curl_setopt( $instagram_cnct, CURLOPT_URL, "https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=". $token ); // подключаемся
curl_setopt( $instagram_cnct, CURLOPT_RETURNTRANSFER, 1 ); // просим вернуть результат
curl_setopt( $instagram_cnct, CURLOPT_TIMEOUT, 15 );
$newtocken = json_decode( curl_exec( $instagram_cnct ) ); // получаем и декодируем данные из JSON
curl_close( $instagram_cnct ); // закрываем соединение
$token= $newtocken->data->access_token;
}, 5097600000 );// 59 дней
/*
* Тут указываем либо ID пользователя, либо "self" для вывода фото владельца токена
* Как получить ID? Да в том же инструменте, в котором вы получали токен
*/
$user_id = 'self';
$instagram_cnct = curl_init(); // инициализация cURL подключения
curl_setopt( $instagram_cnct, CURLOPT_URL, "https://graph.instagram.com/me/media?fields=caption,id,media_type,media_url,permalink,thumbnail_url&access_token=". $token ); // подключаемся
curl_setopt( $instagram_cnct, CURLOPT_RETURNTRANSFER, 1 ); // просим вернуть результат
curl_setopt( $instagram_cnct, CURLOPT_TIMEOUT, 15 );
$media = json_decode( curl_exec( $instagram_cnct ) ); // получаем и декодируем данные из JSON
curl_close( $instagram_cnct ); // закрываем соединение
/*
* количество фотографий для вывода
*/
$limit = 4;
/*
* размер изображений (высота и ширина одинаковые)
*/
$size = 200;
/*
* функция array_slice() задает количество элементов, которые нам нужно получить из массива
* если нам нужно вывести все фото, тогда: foreach($media->data as $data) {
*/
foreach(array_slice($media->data, 0, $limit) as $data) {
echo '<a href="' . $data->permalink . '" target="_blank">';
echo '<img src="'. $data->media_url . '" height="'.$size.'" width="'.$size.'"/>';
echo '</a>';
}
?>
$app_secret = '';
$short_lived_access_token = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.instagram.com/access_token?grant_type=ig_exchange_token&client_secret={$app_secret}&access_token={$short_lived_access_token}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
$long_lived_access_token = $data['access_token'];
$long_lived_access_token = '';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token={$long_lived_access_token}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
$refreshed_long_lived_access_token = $data['access_token'];