删除实时订阅的端点似乎已停止工作。我正在使用'DELETE'自定义请求执行cURL'POST'并从Instagram接收以下JSON响应:
{"meta":{"code":200},"data":null}
但是,订阅不会被删除。我的活动订阅数量永远不会减少,我无法订阅新的对象类型。
还有其他人有这个问题吗?这是我在PHP中的实现(几天前工作正常,直到几天前):
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, "https://api.instagram.com/v1/subscriptions? client_secret=$client_secret&client_id=$client_id");
curl_setopt($curl, CURLOPT_POST, false);
$resp = curl_exec($curl);
// Parse JSON \
$json = json_decode($resp);
foreach ($json->data as $subscription)
{
echo "DELETING:\r\n";
echo "object:\t$subscription->object\r\n";
echo "object_id:\t$subscription->object_id\r\n";
echo "aspect:\t$subscription->aspect\r\n";
echo "callback URL:\t$subscription->callback_url\r\n";
echo "type:\t$subscription->type\r\n";
echo "id:\t$subscription->id\r\n\r\n";
curl_setopt($curl, CURLOPT_URL, "https://api.instagram.com/v1/subscriptions?client_secret=$client_secret&client_id=$client_id&id=$subscription->object_id");
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
$resp = curl_exec($curl);
echo $resp."\r\n";
}
答案 0 :(得分:1)
经过几个小时的试验和错误卷曲,我设法让这个工作,它似乎是一致的,并一直工作。你和我之间的主要区别在于设置这些选项:
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POST, true);
如您所见,我将CUSTOMREQUEST设置为“DELETE”,但也按顺序将POST设置为true。我猜测,如果不将POST设置为true,它实际上会执行GET(虽然我可能会非常错)。我还读到了关于卷曲选项顺序重要的一些回答,所以也要警惕。下面是我的完整删除功能,如果没有提供$id
,它将删除所有订阅,所以请注意。
public function delete($id = "") {
CakeLog::write('debug', 'Delete subscription called.');
$clientID = "<<MY clientID>>";
$clientSecret = "<<MY clientSecret>>";
$deleteURL = "https://api.instagram.com/v1/subscriptions";
$deleteParams = "?client_id=".$clientID."&client_secret=".$clientSecret;
if ($id == "") {
$deleteParams .= "&object=all";
}
else {
$deleteParams .= "&id=".$id;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $deleteURL.$deleteParams);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Should cURL return or print out the data? (true = return, false = print)
$output = curl_exec($ch);
curl_close($ch);
CakeLog::write('debug', 'DELETE SUBSCRIPTION RESULT: ' . $output);
$this->redirect(array('action' => 'index'));
}
请让我知道它是怎么回事,祝你好运