【问题标题】:Getting Instagram subscription JSON data from post in PHP从 PHP 中的帖子获取 Instagram 订阅 JSON 数据
【发布时间】:2015-04-21 21:19:04
【问题描述】:

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 问题

【问题讨论】:

  • 您是否查看过请求正文的实际外观?某事。在你的情况下就像var_dump($update)
  • @helmbert 是的,$update 和 $data 都打印 1。我真的不知道下一步该去哪里。任何想法/指针?
  • 订阅工作正常,因为当我在 Instagram 上发帖时,它会触发一封电子邮件,实际上是在检查用户 ID,所以我可以去查找用户最后的帖子是我无法获得的。
  • 您能否将发布数据转到 requestb.in 之类的其他位置,以排除您的代码存在问题?
  • 试试 Matt 的建议 - requestb.in - 将有助于调试传入的数据。传入的标头说什么?

标签: php json instagram instagram-api


【解决方案1】:

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

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

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

【讨论】:

  • 我仍然只得到 1 个输出。 :( 将尝试 requestb.in 的想法。
【解决方案2】:

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 的输出,我建议将它们记录下来或通过电子邮件发送给自己。

【讨论】:

  • 事情是这样的,原始示例中的 var_dump() 应该返回了数据。 foreach 只是遍历数组。我认为在您的测试和摆弄中,您已经推动设置返回正确的数据...
猜你喜欢
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多