2014-11-05 3 views
1

Я пытаюсь выполнить запрос XML CalDAV на сервер google caldav с PHP.Google CALDAV XML-запрос с использованием curl (php)

По какой-то причине Google CalDAV очень плохо документирован.

Целью является получение списка всех событий, включая данные, относящиеся к конкретным событиям. (например, начало, конец, сводка, ...). Цель состоит в том, чтобы сделать это максимально эффективно (все данные события в одном запросе).

Я понял, что это может быть выполнено с помощью запроса ОТЧЕТ.

Я использую код, найденный в this post.

Мой точный код:

запрос
$xml= '<c:calendar-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav"><d:prop><c:calendar-data /></d:prop></c:calendar-query>'; 
    $url = "https://apidata.googleusercontent.com/caldav/v2/*email*/events"; 
    $user = "**********@gmail.com"; 
    $pw = "*********"; 

    $data = $this->doRequest($user, $pw, $url, $xml); 
    print_r($data); 

} 

public function doRequest($user, $pw, $url, $xml) 
{ 
    $c=curl_init(); 
    $url = preg_replace('{^https?://[^/]+}', '', $url); 
    curl_setopt($c, CURLOPT_URL, $url); 
    curl_setopt($c, CURLOPT_HTTPHEADER, array("Depth: 1", "Content-Type: text/xml; charset='UTF-8'", "Prefer: return-minimal")); 
    curl_setopt($c, CURLOPT_HEADER, 0); 
    curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false); 
    curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($c, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($c, CURLOPT_USERPWD, $user.":".$pw); 
    curl_setopt($c, CURLOPT_CUSTOMREQUEST, "REPORT"); 
    curl_setopt($c, CURLOPT_POSTFIELDS, $xml); 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
    $data=curl_exec($c); 

    curl_close($c); 

    return $data; 
}  

XML-копирования-вставки из the SabreDAV wiki.

Что возвращает Google, этот код является «Неизвестной ошибкой». Я знаю, что учетные данные из Google работают, так как я успешно попробовал некоторый запрос, используя встроенные запросы SabreDAV (например, propfind). Однако запрос SabreDAV не может быть создан.

Так что я думаю, что в запросе xml должно быть что-то, что Google Caldav не может обработать должным образом.

Я уже несколько дней занимаюсь этим, но я не могу найти правильное решение.

+0

Сначала вам нужно узнать об этом «Unkown Error». Это сообщение о его собственном ist не спрашивает много. Пожалуйста, поставите свой вопрос программирования как можно более конкретным. – hakre

+0

Случайные предложения. Можете ли вы попробовать удалить заголовок 'Depth'? Я чувствую, что я помню, что это, возможно, имело к этому какое-то отношение, но я не уверен ... – Evert

+0

@hakre Короче говоря: что я делаю неправильно, чтобы получить правильный ответ от сервера Google CalDAV? Исследования не дают мне много информации о «Неизвестной ошибке». – Rbn

ответ

0

Ну, вы, кажется, использует HTTP Basic Auth, не разрешенную API Google CalDAV:

https://developers.google.com/google-apps/calendar/caldav/v2/guide#connecting_to_googles_caldav_server

Тогда вы не указать, какой URL была цель Вашего запроса.

+0

Я отказался от идеи calDAV и вместо этого использовал API Календаря Google, который использует Oauth2. – Rbn

 Смежные вопросы

  • Нет связанных вопросов^_^