0

我正在尝试与 instagram API 连接,连接工作正常,并且我正在接收 API 文档中描述的更新,问题是我无法访问发送到我的回调函数的数据。

根据文档

当有人发布新照片并触发更新您的订阅时,我们会向您在订阅中定义的回调 URL 发出 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 没有填充,知道我缺少什么吗?

4

1 回答 1

1

查看您问题中包含的示例 JSON 响应,我可以得出结论,您尝试与之交谈的对象包装在一个数组中(因此 JSON 字符串中的 [ 和 ] 围绕它)。

您应该使用$answers[0]->object_id. 如果这不起作用,您可以随时使用var_dump来检查您的变量之一中的数据。

于 2012-11-22T13:55:42.907 回答