Błąd cURL „Wymagana długość treści”… 3 dni wyszukiwania, nie ma szczęścia

Zanim zapytasz: Sprawdziłem już każde podobne pytanie, które już miało odpowiedź, a żadne z proponowanych rozwiązań nie działa. Mam nadzieję, że ktoś może zauważyć błąd w moim kodzie.

Przesyłając post cURL do Google, zwracam błąd 411, „Żądania POST wymagają nagłówka treści”

//Info required to authenticate
$URL = "https://www.google.com/accounts/ClientLogin";
$POST = http_build_query(array(
 'Email' => '[email protected]',
 'Passwd' => 'XXXXXXXXXXXXXXX',
 'source' => 'primary',
 'service' => 'cl'
));

$ch = curl_init( $URL );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$response = curl_exec($ch); //returns SID=<sid code>nLSID=<lsid code>nAuth=<auth code> or ERROR=<message>
if ( curl_errno($ch) )
 die( 'Error contacting server' );

//Successful auth results in http code 200
if ( curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200 )
 die( 'Failed to authenticate' );

//Extract auth code - Authorization: GoogleLogin auth=yourAuthToken
$auth_code = substr($response, strpos($response, 'Auth=')+5);

//We're done here
curl_close($ch);


$url = "https://www.googleapis.com/calendar/v3/calendars/".urlencode('[email protected]')."/events?sendNotifications=true&pp=1&key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx";  

$post_data = http_build_query(array(
    "end" => array("dateTime" => "2013-14-11T10:40:00.000-07:00"),  
    "start" => array("dateTime" => "2013-14-11T10:00:00.000-07:00"),  
    "summary" => "my_summary",
    "description" => "my_description"
));

$headers = array(
    'Authorization: GoogleLogin auth='.$auth_code.'',
    'Content-Type: application/json'
);

$ch2 = curl_init();  
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch2, CURLOPT_POSTFIELDS, $post_data);  

$output = curl_exec($ch2);  

curl_close($ch2);

echo '<pre>'.print_r($output).'</pre>';

Rzeczy, które próbowałem:

-Dodawanie 'Długość treści:' .strlen ($ post_data)

-Content-type 'x-www-form-urlencoded'

- używając bardzo prostego ciągu json dla post_data, dzięki czemu nie użyłem http_build_query

- Próba wysłania go jako PUT zamiast POST

-I kilka innych rzeczy w ciągu ostatnich kilku dni, których nie mogę sobie teraz przypomnieć

Intencja: Dodanie wydarzenia tylko do MY kalendarza przy użyciu tylko PHP bez kroków uwierzytelniania wymaganych przez użytkownika. Musi być w stanie uruchomić wszystko wewnątrz funkcji php, asynchronicznie (wywoływane przez AJAX)

UWAGA: Nieużywanie Wordpress ani żadnego innego CMS

-Kyle

questionAnswers(5)

yourAnswerToTheQuestion