似乎这个解决方案不再适用 -
新API需要访问令牌,该令牌在通过登录页面后动态分配.有没有办法仍然通过PHP以编程方式提取Feed而不跳过新的oauth篮球?这对于设置crontab以自动将新帖子保存到数据库非常有用.
Lax*_*man 26
是的你可以.您无需登录或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);
Run Code Online (Sandbox Code Playgroud)
更新:Instagram已更改用户媒体rss网址.为了获得RSS提要,您现在必须使用 https://www.instagram.com/[USERNAME]/?__a=1
Ali*_*zen 12
我们仍然可以访问照片。但只是最后12张照片。如果想要更多照片 access_token 需要。这是我获取照片的方式。
$instaResult = file_get_contents('https://www.instagram.com/'.$username.'/?__a=1');
$insta = json_decode($instaResult);
$instagram_photos = $insta->graphql->user->edge_owner_to_timeline_media->edges;
Run Code Online (Sandbox Code Playgroud)
现在我们得到最后一张照片数组。
比我在带有 foreach 循环的视图中使用的。
<ul>
@foreach($instagram_photos as $instagram_photo)
<li>
<img src="{{$instagram_photo->node->display_url}}">
</li>
@endforeach
</ul>
Run Code Online (Sandbox Code Playgroud)
尝试这个 php 库: https: //github.com/postaddictme/instagram-php-scraper
<?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);
Run Code Online (Sandbox Code Playgroud)