我正在尝试连接instagram API,连接正常,我收到的更新正如API文档中所述,问题是我无法访问数据发送到我的回调函数。
根据doc
当有人发布新照片并触发其中一个订阅的更新时,我们会对您在订阅中定义的回调网址发出POST请求
这是我的代码:
// check if we have a security challenge
if (isset ($_GET['hub_challenge']))
echo $_GET['hub_challenge'];
else // This is an update
{
// read the content of $_POST
$myString = file_get_contents('php://input');
$answer = json_decode($myString);
// This is not working starting from here
$id = $answer->{'object_id'};
$api = 'https://api.instagram.com/v1/locations/'.$id.'/media/recent?client_secret='.INSTA_CLI_SECRET.'&client_id='.INSTA_CLI_ID;
$response = get_curl($api); //change request path to pull different photos
$images = array();
if($response){
$decode = json_decode($response);
foreach($decode->{'data'} as $item){
// do something with the data here
}
}
}
显示$ myString变量我有这个结果,不知道为什么它没有被解码为json :(
[{“changed_aspect”:“media”,“subscription_id”:2468174,“object”: “geography”,“object_id”:“1518250”,“time”:1350044500}]
当我对我的$ id进行硬编码时,get_curl函数正常工作。
我想我的$ myString有问题,遗憾的是$ _POST cvariable没有填充,不知道我错过了什么?
答案 0 :(得分:1)
查看问题中包含的示例JSON响应,我可以得出结论,您尝试与之对话的对象被包装在一个数组中(因此在JSON字符串中围绕它的[和])。
您应该使用$answers[0]->object_id
访问它。
如果这不起作用,您可以随时使用var_dump
检查其中一个变量中的数据。