1

ガイドを使用して、GoogleカレンダーAPIへのcURLリクエストを実行しようとしています。

POST https://www.googleapis.com/calendar/v3/calendars/{name_of_my_calendar}/events?sendNotifications=true&pp=1&key={YOUR_API_KEY}

Content-Type:  application/json
Authorization:  OAuth 1/SuypHO0rNsURWvMXQ559Mfm9Vbd4zWvVQ8UIR76nlJ0
X-JavaScript-User-Agent:  Google APIs Explorer

{
 "start": {
  "dateTime": "2012-06-03T10:00:00.000-07:00"
 },
 "end": {
  "dateTime": "2012-06-03T10:20:00.000-07:00"
 },
 "summary": "my_summary",
 "description": "my_description"
}

PHPでそれを行うにはどうすればよいですか?どのパラメーターを送信する必要があり、どの定数を使用する必要があるのだろうか。私は現在やっています:

        $url = "https://www.googleapis.com/calendar/v3/calendars/".urlencode('{name_of_my_calendar}')."/events?sendNotifications=true&pp=1&key={my_api_key}";  

        $post_data = array(  
            "start" => array("dateTime" => "2012-06-01T10:00:00.000-07:00"),  
            "end" => array("dateTime" => "2012-06-01T10:40:00.000-07:00"),  
            "summary" => "my_summary",
            "description" => "my_description"
        );

        $ch = curl_init();  
        curl_setopt($ch, CURLOPT_URL, $url);  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
        curl_setopt($ch, CURLOPT_POST, 1);  
        // adding the post variables to the request  
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);  

        $output = curl_exec($ch);  

        curl_close($ch);  

しかし、応答は次のとおりです。

{
    error: {
        errors: [
        {
            domain: "global",
            reason: "required",
            message: "Login Required",
            locationType: "header",
            location: "Authorization"
        }
        ],
        code: 401,
        message: "Login Required"
    }
}

パラメータをどのようにフォーマットすればよいですか?

4

1 に答える 1

2

この質問はかなり前に出されていることに気付きましたが、しばらくしてポストパラメータの問題を理解した後、他の人が答えるのに役立つかもしれないと思いました. 最初に「$post_data」内で、「開始」と「終了」を切り替えました。

$post_data = array(
    "end" => array("dateTime" => "2012-06-01T10:40:00.000-07:00"),
    "start" => array("dateTime" => "2012-06-01T10:00:00.000-07:00"),  
    "summary" => "my_summary",
    "description" => "my_description"
);

第二に、Google カレンダー API はデータが json であることを期待していると考えたので、curl_setopt で:

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));

これは私にとって完璧に機能しました。他の人にも役立つことを願っています!

于 2013-10-16T08:51:40.283 に答える