2013-11-25 2 views
5

헬로우,Instagram 실시간 업데이트 태그 - 빈 데이터 얻기, 이유는 무엇입니까?

하나의 프로젝트에서 작업 중이며 특정 태그에 대해 Instagram의 실시간 업데이트가 필요합니다.

<?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); 
    } 
?> 

그리고 활동에서 선 :

[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 
    $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); 
?> 

그리고 출력을 구독 만들기 내 코드입니다 .log :

[modified_aspect] : "media", "object": "tag", "object_id": "winter", "time": 1385411793, "subscription_id": 3932963, "data": {}}]

올바른 subscription_id가 표시되지만 데이터가 비어 있습니다. 또한 로그 보이는 엑서스 같은

54.209.52.224 - - [/ 11월/2,013 25 : 20 : 59 : 20 +0100] "POST /instagram/callback.php HTTP/1.0"200 231 ","- "파이썬 -httplib2/0.7.4 (gzip) "

그리고 상태 코드는 200이지만 데이터는 다시 비어 있습니다. Instagram이 콜백 파일에 '오고'있지만 데이터가 비어 있습니다.

내가 뭘 잘못하고 있니?

답변

12

Instagram Realtime API 구독은 업데이트가 아닌 가입 한 개체에 대한 업데이트가있는 경우에만 알려줍니다. 알림을 받으면 API (아마도 https://api.instagram.com/v1/tags/winter/media/recent)를 호출하고 새 콘텐츠가 무엇인지 확인해야합니다.

변경 볼륨에 따라 특정 시간 간격으로이 호출을 일괄 처리하는 것이 좋지만 아래 내용이 좋은 시작일 것입니다. 또한 검색하지 않은 항목 만 검색하고 싶을 수도 있습니다.

<?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); 
    } 

} 
?> 
+0

대단히 감사합니다! – consigliere

+0

@cdbconcepts 사용자를 구독하는 경우 사용자 ID를 가져 와서 확인하기보다는 모든 사용자에게 업데이트를 확인해야합니다. 나는 현재 JSON을 PHP 배열에있는 id로 반환 할 수 없다는 문제가있다. http://stackoverflow.com/questions/29783318/getting-instagram-subscription-json-data-from-post- in-php/29875769 # 29875769 –

1

인증 된 사용자 중 한 명으로부터 업데이트가 있다고 말하면 $ _POST이 (가) 발생하며 153 개가 피드에 가입되어 있습니다. 사용자에게 업데이트가 있는지 확인하는 유일한 방법은 최신 정보를 얻는 것입니다.

본인도 직접 IG에 사진을 게시 할 수 있습니다. $ _POST가 수신되어 사용자의 루프가 트리거되지만 실시간 API에서 $ _POST 트리거가 도착하면 동시에 최신 항목이 api에 표시되지 않습니다.

관련 문제