【发布时间】:2019-11-14 10:32:09
【问题描述】:
自 2019 年 10 月 21 日起,Instagram 阻止您在 Instagram 内创建和管理您的客户,现在一切都通过 Facebook 开发人员进行管理,这没有真正的问题......
在我的例子中,只需要显示单个用户个人资料图像。我很快就完成了这项工作,但是访问令牌每 2 小时到期一次,然后我需要再次重新授权...这以前从来不是问题...您授权一次,它就可以工作了。
获取这个工作代码:
function fetchData($url){
$inst = curl_init($url);
curl_setopt($inst, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($inst, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($inst, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($inst);
curl_close($inst);
return $output;
}
$insta_access_token = 'MY_ACCESS_TOKEN';
$insta_count = '6';
$instagram_result = fetchData("https://graph.instagram.com/me/media?fields=id,username,media_url&access_token={$insta_access_token}&count={$insta_count}");
$instagram_result = json_decode($instagram_result);
print_r($instagram_result);
在访问令牌过期之前,这一切正常。
我在此处看到了其他完全不使用 API 的技巧:How can I get a user's media from Instagram without authenticating as a user?
这使用 PHP 来提取配置文件内容,并且是我研究中唯一可行的解决方案,可以从一次性配置文件中显示基本图片库:
$html = file_get_contents('https://instagram.com/apple/');
preg_match('/_sharedData = ({.*);<\/script>/', $html, $matches);
$profile_data = json_decode($matches[1])->entry_data->ProfilePage[0]->graphql->user;
我是否遗漏了什么,或者没有办法让有效的访问令牌在经过一次身份验证后继续运行以进行基本图像显示?
干杯。
【问题讨论】:
-
你可能想要一个刷新令牌tools.ietf.org/html/rfc6749#section-1.5
-
@delboy1978uk 不幸的是 Instagram 不允许你这样做 :(
-
在这种情况下尝试捕获并获取新令牌并再次拨打电话:-|
-
@delboy1978uk 唯一的问题是你不能自动化它,用户实际上似乎必须点击授权......非常令人沮丧。
-
@SteveHolland 下面的答案会给你一个访问令牌稍长但会过期,唯一的方法是编写一些代码来重新验证并重新生成某种形式的访问令牌cron 工作,恐怕我还没有解决这个问题。对于基本用法来说似乎不必要的过度。我原来的问题中上面的 file_get_contents() 方法现在是一个厚颜无耻的解决方法。
标签: php instagram instagram-api instagram-graph-api