2013-12-23 125 views
2

删除实时订阅的端点似乎已停止工作。我执行了“删除”自定义请求卷曲“POST”,并接收来自Instagram的以下JSON响应:在Instagram中删除实时订阅

{"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

我只是新来的Instagram的API,所以以前有没有工作的这方面的证据,但我也似乎有删除订阅问题。你有没有设法解决这里发生的事情? –

+0

还没有。几个月前,我向Instagram提出了一项支持请求。有一段时间我以为我是唯一一个。我仍然无法删除我的所有实时订阅。 – brandonthorpe

回答

1

经过反复试验,卷曲小时,我设法得到这个工作,这似乎是一致的,工程全部时间。你和我之间的主要区别是这些选项的设置:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); 
curl_setopt($ch, CURLOPT_POST, true); 

正如你所看到的,我设置了CUSTOMREQUEST为“删除”,但随后又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')); 

} 

请让我知道如何去,祝你好运

+0

感谢这篇文章。它仍然不适合我。我想知道是否存在特定于我的API访问凭据的问题。作为curl_exec调用的输出,您看到了什么? – brandonthorpe

+0

我得到了和你一样的回复,但它确实有效 - {“meta”:{“code”:200},“data”:null}。您如何检查您的订阅是否仍然存在? –

+0

我收到500个服务器错误。 $输出为空。我认为删除功能不工作instagram http://developers.instagram.com/post/82701625883/api-returning-500-errors-on-specific-ip – neoerol