从PHP发布Instagram订阅JSON数据

时间:2015-04-21 21:19:05

标签: php json instagram instagram-api

Instagram API的订阅整个过程似乎不太直接。

我设置了一些代码来接收Instagram发送给我时发送的帖子数据,其中包含来自我的某个订阅的帖子的通知。然而,当我尝试查看数据时,原始JSON,它发布我无法得到它。如果我print_rvar_dump,我只会得到数字1.

请参阅我的代码以访问数据:

    // Catches realtime updates from Instagram
if ($_SERVER['REQUEST_METHOD']==='POST') {
     // Retrieves the POST data from Instagram
    $update = file_get_contents('php://input');
    $data = json_decode($update);

    var_dump($data); //Outputs 1
    print_r($data[0]); //Outputs 1

}   

如何将JSON作为数组获取?

这就是JSON应该是这样的:

[
    {
        "subscription_id": "1",
        "object": "user",
        "object_id": "1234",
        "changed_aspect": "media",
        "time": 1297286541
    },
    {
        "subscription_id": "2",
        "object": "tag",
        "object_id": "nofilter",
        "changed_aspect": "media",
        "time": 1297286541
    },
    ...
]

感谢您的帮助。

更新1

我使用PHP打印HTTP标头。有内容,因为它显示了它的长度。虽然仍然无法得到它。我认为这是一个Instagram问题,我认为

2 个答案:

答案 0 :(得分:1)

如果您使用的是PHP,我想最简单的访问输入数据的方法是使用$_GET$_POST超全局。在这种情况下,请尝试var_dump($_POST),看看你得到了什么。

如果您从$_POST获得了一些内容,则可以使用json_decode将JSON解码为数组。

您还可以尝试使用Instagram API的一些PHP实现,例如:https://github.com/macuenca/Instagram-PHP-API它将用于您需要的工作。

答案 1 :(得分:1)

Woop发现了问题并解决了它。调试并不容易,因为所有这些都发生在Instagram点击你的页面时你没有真正看到输出。

我需要做的是创建一个foreach循环来运行解码的JSON。经过大量的调试和头部刮擦后,JSON不为空,它只是以JSON数组开始。

无论如何,这里的代码现在有效

// Catches realtime updates from Instagram
    if ($_SERVER['REQUEST_METHOD']==='POST') {
         // Retrieves the POST data from Instagram
        $update = file_get_contents('php://input');
        $data = json_decode($update);

        foreach($data as $k => $v) // can be multiple updates per call
        {
            $sub_id = $v->subscription_id; //Contains the JSON values
            $user = $v->object_id;
        }
     }

如果你想查看来自$ sub_id的输出,例如我建议记录它们或通过电子邮件发送给自己,例如。