【发布时间】:2013-12-07 20:30:01
【问题描述】:
我遇到了一个问题,我们正在创建的标签订阅只能持续大约 30 次回调
我们正在使用 PHP 和 cURL 与 Realtime API 对话
我们的 callback.php 只是将收到的 POST 请求记录到一个文件中,这样我们就可以跟踪它被调用了多少次。大约 30 次调用后,它停止跟踪,当我们向 API 查询订阅列表时,订阅 ID 和 TAG 不再被跟踪......但是,我们没有收到错误返回,只是:
{"meta":{"code":200},"data":[]}
我们的 subscribe.php 看起来像这样:
<?php
// client ids and secrets edited for posting
$client_id = 'XXXXXXXXXXXXXXXXXXX';
$client_secret = 'XXXXXXXXXXXXXXXXXXXXX';
$object = 'tag';
$object_id = $_GET['tag'];
$aspect = 'media';
$verify_token='';
$callback_url = 'http://vslve.com/app/callback.php';
$attachment = array(
'client_id' => $client_id,
'client_secret' => $client_secret,
'object' => $object,
'object_id' => $object_id,
'aspect' => $aspect,
'verify_token' => $verify_token,
'callback_url'=>$callback_url
);
$url = "https://api.instagram.com/v1/subscriptions/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //to suppress the curl output
$result = curl_exec($ch);
curl_close ($ch);
$myString = $result;
$jsonArray = json_decode($myString);
foreach($jsonArray as $value){
$sub_id = $value->id;
}
$content = " ".$sub_id." ".$object_id."\r\n";
file_put_contents('subscribe.log', $content, FILE_APPEND);
print_r($result);
?>
还有我们的callback.php
<?php
$challenge = $_GET['hub_challenge'];
if ($challenge) {
echo $challenge;
}else{
sleep(2);
$myString = file_get_contents('php://input');
$jsonArray = json_decode($myString);
foreach($jsonArray as $value){
$sub_id = $value->subscription_id;
$tag = $value->object_id;
$content = " ".$sub_id." ".$tag." ".$url."\r\n";
file_put_contents('activity.log', $content, FILE_APPEND);
}// end foreach
}// end if
?>
我们是否以某种方式超出了速率限制?关于我们的订阅为何不断消失的任何帮助都将是极好的。
【问题讨论】:
-
你解决了这个问题还是它仍然打开?我在 API 文档中读到,您需要在 2 秒内响应实时回调。我猜如果你不这样做,Instagrams 服务器会在一段时间后停止给你打电话。
标签: php tags instagram subscription