2015-06-15 38 views
0

我是Instagram的新人,基於實時圖片更新。不明白的過程,任何人都可以啓發我如何在PHP中創建回調URL?從註冊客戶端的重定向uri需要鏈接到這個回調URL?下面的代碼是我如何做回調URLinstagram訂閱標籤上的步驟實時圖片更新

$checkin_url = "https://api.instagram.com/v1/subscriptions/"; 

//$instagram[] for client_id, client_secret, redirect_uri 
$parameters = array(
    'client_id' => $instagram['client_id'], 
    'client_secret' => $instagram['client_secret'], 
    'object' => 'tag', 
    'aspect' => 'media', 
    'object_id' => 'nofilter', 
    'callback_url' => $instagram['redirect_uri'] 
); 

$curl = curl_init($checkin_url); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $parameters); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
$response = curl_exec($curl); 

print($response); 

回答

0

你錯過了在訂閱過程中的重要一步(It's in the doc):

當你用信息POST上面創建新的訂閱,我們同時提交一個GET請求到您的回調URL [...]爲了驗證訂閱,您的服務器必須迴應只有hub.challenge參數的GET請求:

換句話說,當你創建su bscription,他們用一些參數向您的回調URI發送一個GET請求,並且必須返回hub.challenge參數(PHP中的hub_challenge,因爲使用PHP時.的參數轉換爲_)。

因此,在您的回調URI中,您必須測試請求方法。如果是GET,請執行下列操作:

exit($_GET['hub_challenge']); 

,如果它是POST,這是一個訂閱更新,所以你必須JSON解碼的原始體,以獲得DATAS,在商務部的:)

0
聲明

喜托馬斯,我得到了一個錯誤,而且不知道爲什麼它不工作...

串(92) 「{」 元 「:{」 ERROR_TYPE 「:」 APISubscriptionError」 「代碼」:400,「error_messa戈 「:」 無效的 響應 「}}」

認購:

$callback_url = "http://myhost.com/auth/instagram/callback"; 

    $params = array(
     'client_id' => $ig_client_id, 
     'client_secret' => $ig_client_secret, 
     'aspect' => "media", 
     'object' => "tag", 
     'object_id' => "greentea", 
     'callback_url' => $callback_url 
    ); 

    $defaults = array(
     CURLOPT_URL => 'https://api.instagram.com/v1/subscriptions/', 
     CURLOPT_POST => true, 
     CURLOPT_POSTFIELDS => $params, 
     CURLOPT_SSL_VERIFYPEER => false, 
     CURLOPT_RETURNTRANSFER => true, 
     CURLOPT_HTTPHEADER => array('Accept: application/json') 
    ); 
    $ch = curl_init(); 
    curl_setopt_array($ch, $defaults); 
    $jsonData = curl_exec($ch); 
    curl_close($ch); 
    var_dump($jsonData); 

從回調:

if (isset ($_GET['hub_challenge'])){ 
    exit($_GET['hub_challenge']); 
} 
else { 
    $rawdata = file_get_contents('php://input'); 
    $decode_data = json_decode($rawdata); 
    echo $decode_data; 
}