2012-04-19 1 views
1

Je suis en train de faire une demande cURL calendrier google api en utilisant , qui dit:Insérer événement Google Agenda avec php

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" 
} 

Comment suis-je censé faire en php? Je me demande quels paramètres je devrais envoyer et quelles constantes je devrais utiliser. Je fais actuellement:

 $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); 

mais la réponse est:

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

Comment dois-je formater mes paramètres?

+0

Avez-vous lu https://developers.google.com/google-apps/calendar/auth? – Daan

+0

Oui, mon code fonctionne sur un exemple où je viens d'analyser les événements du même calendrier. – Gustav

+0

Hmm. Pas sûr, je n'ai jamais travaillé avec cette API auparavant. Vous pouvez essayer le package officiel de l'API PHP: http://code.google.com/p/google-api-php-client/ J'espère que cela vous aidera un peu! – Daan

Répondre

2

J'ai remarqué que cette question est posée il y a un certain temps, mais après avoir trouvé le problème post-paramètre après un certain temps j'ai pensé qu'il pourrait être utile aux autres d'y répondre. Tout d'abord dans les 'post_data de $', je suis passé le 'début' et 'fin':

$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" 
); 

En second lieu, je me suis dit Google Calendar API attend que les données soient JSON, donc dans curl_setopt:

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

Cela a fonctionné parfaitement pour moi, j'espère que c'est aussi utile à quelqu'un d'autre!

+0

Pour moi ne fonctionne pas. J'ai essayé ce code, ou je fais mal la clé, mais je ne pense pas. est celui sous: "Clé pour les applications serveur (avec verrouillage IP)" J'ai autorisé toutes les IP pour le moment. autorisation requise même pour moi. Puis-je avoir accès à votre exemple complet s'il vous plaît? – AndreaBogazzi

Questions connexes