Есть ли способ получить ленту instagram с помощью PHP без входа в систему?
Похоже, что это решение больше не работает -
Как получить ленту пользователя в Instagram
Для нового API требуется токен доступа, который динамически назначается после прохождения страницы входа в систему. Есть ли способ по-прежнему программно передавать канал через PHP, не перепрыгивая через новые обручи oauth? Это полезно для настройки кронтаба для автоматического сохранения новых записей в базу данных.
2 answers
Да, ты можешь. Вам не нужно входить в систему или использовать access_token, чтобы получить последние 20 сообщений. Вам просто нужно проанализировать содержимое json из https://www.instagram.com/[USERNAME]/media/
.
Замените [username]
на instagram user_name
.
Например.
$instaResult = file_get_contents('https://www.instagram.com/'.$username.'/media/');
$insta = json_decode($instaResult);
ОБНОВЛЕНИЕ: Instagram изменил url-адрес rss-канала пользователя. Для того, чтобы получить rss-канал, вам теперь нужно использовать https://www.instagram.com /[ИМЯ ПОЛЬЗОВАТЕЛЯ]/?__a=1
Попробуйте эту библиотеку php: https://github.com/postaddictme/instagram-php-scraper
А вот пример (https://github.com/postaddictme/instagram-php-scraper/blob/master/examples/getAccountMediasByUsername.php):
<?php
require __DIR__ . '/../vendor/autoload.php';
// If account is public you can query Instagram without auth
$instagram = new \InstagramScraper\Instagram();
$medias = $instagram->getMedias('kevin', 25);
// Let's look at $media
$media = $medias[0];
echo "Media info:\n";
echo "Id: {$media->getId()}\n";
echo "Shotrcode: {$media->getShortCode()}\n";
echo "Created at: {$media->getCreatedTime()}\n";
echo "Caption: {$media->getCaption()}\n";
echo "Number of comments: {$media->getCommentsCount()}";
echo "Number of likes: {$media->getLikesCount()}";
echo "Get link: {$media->getLink()}";
echo "High resolution image: {$media->getImageHighResolutionUrl()}";
echo "Media type (video or image): {$media->getType()}";
$account = $media->getOwner();
echo "Account info:\n";
echo "Id: {$account->getId()}\n";
echo "Username: {$account->getUsername()}\n";
echo "Full name: {$account->getFullName()}\n";
echo "Profile pic url: {$account->getProfilePicUrl()}\n";
// If account private you should be subscribed and after auth it will be available
$instagram = \InstagramScraper\Instagram::withCredentials('username', 'password', 'path/to/cache/folder');
$instagram->login();
$medias = $instagram->getMedias('private_account', 100);