从 PHP 中的 post 获取 Instagram 订阅 JSON 数据

Getting Instagram subscription JSON data from post in PHP

Instagram API 的整个订阅过程似乎并不简单。

我设置了一些代码来接收当 Instagram 向我发送来自我的一个订阅的 post 通知时发送的 post 数据。但是,当我尝试查看数据时,原始 JSON,posts 我无法查看。如果我 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 headers。有内容是因为它显示了它的长度。仍然无法得到它。这排除了它是 Instagram 问题,我认为

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

如果你从$_POST中得到一些内容,你可以使用json_decode将JSON解码成一个数组。

您还可以尝试 Instagram API 的一些 PHP 实现,例如:https://github.com/macuenca/Instagram-PHP-API 它会满足您的需要。

Woop 发现并解决了问题。调试起来并不容易,因为所有这些都是在 Instagram 访问您的页面时发生的,因此您实际上看不到输出。

我需要做的是通过解码的 JSON 创建一个到 运行 的 foreach 循环。经过大量的调试和摸索之后 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 的输出,我建议您将它们记录下来或通过电子邮件发送给您自己。