У меня есть вызов REST для моего календаря Google, который прекрасно работает на моем старом веб-сайте (www.gmbc.org/events.php), но когда идентичный вызов выполняется с контроллера codeigniter, параметры timeMin / timeMax вызывают его бросить 400 на меня (удалить их, и вызов успешно получает весь календарь с 2012 года):
$st_date = date(DateTime::ATOM);
$end_date = date(DateTime::ATOM, time()+(31 * 24 * 60 * 60));
$call_url = 'https://www.googleapis.com/calendar/v3/calendars/calendar%40gmbc.org/events?timeMin='.$st_date.'&timeMax='.$end_date.'&singleEvents=true&orderBy=startTime&key=[mykeythatworksjustfine]';
$events_call = $this->curl_get($call_url);
повторение $ call_url подтверждает, что оно было создано идентично, а print_r — результат подтверждает, что оно достигло Google:
stdClass Object (
[error] => stdClass Object (
[errors] => Array (
[0] => stdClass Object (
[domain] => global [reason] => badRequest [message] => Bad Request )
)
[code] => 400 [message] => Bad Request
)
)
…что может происходить? Codeigniter мешает вызову curl?
Я могу успешно получать события из этого календаря с установленными TimeMin и TimeMax с помощью проводника API: https://developers.google.com/apis-explorer/#p/calendar/v3/calendar.events.list?calendarId=calendar%2540gmbc.org&timeMax = 2014-11-30T00% 253A00% 253A00Z&TimeMin = 2014-10-01T00% 253A00% 253A00Z&_h = 2&
Отправляемый запрос:
ПОЛУЧИТЬ https://www.googleapis.com/calendar/v3/calendars/calendar%40gmbc.org/events?timeMax=2014-11-30T00%3A00%3A00Z&TimeMin = 2014-10-01T00% 3A00% 3A00Z&ключ ={} YOUR_API_KEY
Попробуйте убедиться, что запрос, который вы отправляете из PHP, заканчивается так же.
Других решений пока нет …