Instagram订阅标签步骤实时照片更新

时间:2015-06-15 10:31:16

标签: javascript php json instagram instagram-api

我是Instagram的新手,基于实时照片更新。不明白这个过程,谁能告诉我如何在php中创建回调URL?从注册客户端的重定向uri需要链接到这个回调URL?以下代码是我对回调网址的处理方法

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

2 个答案:

答案 0 :(得分:0)

您错过了订阅过程中的重要一步(It's in the doc):

  

当您使用上述信息进行POST以创建新订阅时,我们会同时向您的回调URL提交GET请求[...]为了验证订阅,您的服务器必须通过集线器响应GET请求。仅限挑战参数:

换句话说,当您创建订阅时,他们会使用一些参数向您的回调URI发送GET请求,并且您必须在PHP中返回hub.challenge参数(hub_challenge,因为使用PHP .的参数将转换为_)。

因此,在您的回调URI中,您必须测试请求方法。如果是GET,请执行以下操作:

exit($_GET['hub_challenge']);

如果它是POST,那么它是订阅更新,因此您必须对原始主体进行json解码以获取数据,如文档中所述:)

答案 1 :(得分:0)

嗨,托马斯,我收到了一个错误,并且不知道为什么它不起作用......

  

的字符串(92)   " {"元" {" ERROR_TYPE":" APISubscriptionError""代码" 400" ERROR_MESSAGE&# 34;:"无效   响应"}}"

来自订阅:

$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;
}