嗨,
我正在一个项目工作,我需要从Instagram实时更新的某些标签。
这是我创建订阅的代码
<?php
$client_id = 'MOJID';
$client_secret = 'MOJIDSECRET';
$redirect_uri = 'http://example.net/instagram/callback.php';
$apiData = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'redirect_uri' => $redirect_uri,
'aspect' => "media",
'object' => "tag",
'object_id' => "winter",
'callback_url' => $redirect_uri
);
$apiHost = 'https://api.instagram.com/v1/subscriptions/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiHost);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($apiData));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$jsonData = curl_exec($ch);
curl_close($ch);
var_dump($jsonData);
?>
输出为:
[meta] => stdClass Object
(
[code] => 200
)
[data] => stdClass Object
(
[object] => tag
[object_id] => winter
[aspect] => media
[callback_url] => http://example.net/instagram/callback.php
[type] => subscription
[id] => 3932963
)
)
这是callback.php的代码:
<?php
if (isset ($_GET['hub_challenge'])){
echo $_GET['hub_challenge'];
}
else{
$myString = file_get_contents('php://input');
$ALL = $myString."\r\n";
file_put_contents('activity.log', $ALL, FILE_APPEND | LOCK_EX);
}
?>
activity.log中的一行是:
[{“changed_aspect”:“media”,“object”:“tag”,“object_id”:“winter”,“time”:1385411793,“subscription_id”:3932963,“data”:{}}]
我得到了正确的subscription_id,但数据是空的。Acces日志也如下所示:
54.209.52.224--[25/nov/2013:20:59:20+0100]“post/instagram/callback.php http/1.0”200 231“-”python-httplib2/0.7.4(gzip)“
这很好,状态代码200,但数据再次为空。Instagram正在“评论”我的回调文件,但数据是空的。
我做错了什么?
根据更改的数量,您可能希望在特定的时间间隔内批量处理这些调用,但以下内容应该是一个良好的开端。您还可能只想检索尚未检索的项。
<?php
if (isset ($_GET['hub_challenge'])){
echo $_GET['hub_challenge'];
}
else{
$myString = file_get_contents('php://input');
$sub_update = json_decode($myString);
$access_token = '{ previously saved, get this from DB or flatfile }';
foreach($sub_update as $k => $v) // can be multiple updates per call
{
$recent_data = file_get_contents('https://api.instagram.com/v1/tags/'.$sub_update->object_id.'/media/recent?access_token='.$access_token);
file_put_contents('activity.log', serialize($recent_data->data), FILE_APPEND | LOCK_EX);
}
}
?>
我已经通过Instagram API订阅了特定标记的实时更新,使用以下代码(如API文档中提供的): null 这里最好的做法是什么?
我的问题是:-API有什么变化吗?-应用程序中有什么变化吗(这样不是每一张照片都将被公布)?-还有其他人遇到这个问题吗?-我有什么办法可以让它重新工作吗? 我知道这不是一个完美的问题,但我无法在谷歌上挖掘任何东西,instagram开发者页面直接在这里寻求支持。非常感谢任何帮助。
因此,在我看来,有两个问题:1)请求应该是POST(对我不起作用)还是GET(对我起作用)。2)为什么instagram返回空数据,而不是POST到callback_url。
我阅读了Instagram订阅API的新文档。它说,在你订阅后,当人们在他们的页面上发布新媒体时,Instagram会通知你。 我想被通知当一个用户的帖子收到一个新的喜欢或评论? 你觉得这可能吗?
我已经做了一个下拉列表,内容来自数据库,我可以获取id和名称,并在下拉列表中显示名称。但我只想在下一页中存储id:请参见下面的代码: 提交表单后,我可以得到name,但无法得到tag的值,我想要option tag的值,如何获得值?