Instagram API的订阅整个过程似乎不太直接。
我设置了一些代码来接收Instagram发送给我时发送的帖子数据,其中包含来自我的某个订阅的帖子的通知。然而,当我尝试查看数据时,原始JSON,它发布我无法得到它。如果我print_r
或var_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问题,我认为
答案 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的输出,例如我建议记录它们或通过电子邮件发送给自己,例如。