0

Instagram APIに接続しようとしていますが、接続は正常に機能し、APIドキュメントに記載されているとおりに更新を受信して​​います。問題は、コールバック関数に送信されたデータにアクセスできないことです。

ドキュメントによると

誰かが新しい写真を投稿し、それがサブスクリプションの1つの更新をトリガーすると、サブスクリプションで定義したコールバック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変数の1つでデータをチェックアウトするために使用できます。

于 2012-11-22T13:55:42.907 に答える