【问题标题】:instagram subscription tag steps on Real-time Photo UpdatesInstagram 订阅标签在实时照片更新上的步骤
【发布时间】:2015-06-15 10:31:16
【问题描述】:

我是 instagram 的新手,基于实时照片更新。没看懂流程,谁能赐教如何在php中创建回调URL?从注册客户端的重定向 uri 需要链接到这个回调 URL?以下代码是我对回调 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);

【问题讨论】:

    标签: javascript php json instagram instagram-api


    【解决方案1】:

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

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

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

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

    exit($_GET['hub_challenge']);
    

    如果是POST,这是订阅更新,因此您必须对原始正文进行 json 解码才能获取数据,如文档中所述:)

    【讨论】:

      【解决方案2】:

      嗨,Thomas,我遇到了一个错误,不知道为什么它不起作用...

      字符串(92) "{"meta":{"error_type":"APISubscriptionError","code":400,"error_message":"无效 响应"}}"

      来自订阅:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-07
        相关资源
        最近更新 更多