Bonsoir tout le monde.

Voilà 2 bonnes journées que je galère avec l'api de Google. Jamais autant galérer pour si peu ^^.
Alors mon but, c'est de modifier un agenda google depuis un site externe en php.

A force de recherche et de cheveux en moins, j'ai finalement réussi à avoir ma première ébauche fonctionnelle !!! ... En local -_-
Oui car dès que je l'ai passé sur mon serveur, plus moyen de la faire fonctionner... Et pas moyen d'identifier le problème..

Alors je peux me connecter à mon site via OAuth2, je vois mon site, je remplis mon formulaire d'ajout d'évènement, je l'envois et... Rien... Je suis tout simplement déconnecté du site lors de la redirection.

Avant de mettre le code, je précise avoir bien fait les modifications dans google console.

Avant OAuth :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
REDIRECT URIS 
http://localhost/crmgcal/index.php
JAVASCRIPT ORIGINS
http://localhost
Apres OAuth :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
REDIRECT URIS 
http://sousdomaine.domaine.fr/index.php
JAVASCRIPT ORIGINS
http://sousdomaine.domaine.fr
et Public API access toujours en referrer "Any referer allowed" ( je l'ai meme commenté dans le code => DeveloperKey, car avec rien ne fonctionne tout simplement )

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
 
  <title>CRM</title>
  <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
  <!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
  <![endif]-->
 
  <meta name="robots" content="noindex">
  <meta name="robots" content="nofollow">
 
  <!-- Bootstrap stylesheet -->
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
 
  <!-- Picker Date/Time stylesheet -->
  <link rel="stylesheet" href="libraries/picker/themes/default.css" id="theme_base">
  <link rel="stylesheet" href="libraries/picker/themes/default.date.css" id="theme_date">
  <link rel="stylesheet" href="libraries/picker/themes/default.time.css" id="theme_time">
 
 
</head>
 
<?php
error_reporting(E_ALL);
 
 
set_include_path("libraries/" . PATH_SEPARATOR . get_include_path());
 
require_once 'Google/Client.php';    
require_once 'Google/Service/Calendar.php';
session_start();
 
 
$client = new Google_Client(array('use_objects' => true));
$client->setApplicationName("Google Calendar PHP Starter Application");
 
 
 
$client->setClientId('*****************.apps.googleusercontent.com');
$client->setClientSecret('**************');
$client->setRedirectUri('http://sousdomaine.domaine.fr/index.php');
// $client->setDeveloperKey('********************');
$client->setScopes(array('https://www.googleapis.com/auth/calendar'));
 
$cal = new Google_Service_Calendar($client);
 
if (isset($_GET['logout'])) {
  unset($_SESSION['token']);
}
 
if (isset($_GET['code'])) {
  $client->authenticate($_GET['code']);
  $_SESSION['token'] = $client->getAccessToken();
  header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
 
if (isset($_SESSION['token'])) {
  $client->setAccessToken($_SESSION['token']);
}
 
if ($client->getAccessToken()) {
 
  if(isset($_POST['actionforcrm']) && $_POST['actionforcrm']=='add' ) {
    $datestr = $_POST['strdate'].'T'.$_POST['strtime'].':00.000+02:00';
    $dateend = $_POST['enddate'].'T'.$_POST['endtime'].':00.000+02:00';
    $summary = $_POST['summary'];
    $desc    = $_POST['desc'];
 
    $event = new Google_Service_Calendar_Event();
 
    $event->setSummary($summary);
    $event->setLocation('CRM');
    $event->setDescription($desc);
    $event->setVisibility('private');
    $start = new Google_Service_Calendar_EventDateTime();
    $start->setDateTime($datestr);
    $event->setStart($start);
    $end = new Google_Service_Calendar_EventDateTime();
    $end->setDateTime($dateend);
    $event->setEnd($end);
 
    $reminderI = new Google_Service_Calendar_EventReminder();
    $reminderI->setMethod('popup');
    $reminderI->setMinutes('5');
 
    $reminder = new Google_Service_Calendar_EventReminders();
    $reminder->setUseDefault('false');
    $reminder->setOverrides(array($reminderI));
    $event->setReminders($reminder);
    try {
      $createdEvent = $cal->events->insert('********************@group.calendar.google.com', $event);
      print ('<div class="alert alert-success alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>L\'évènement a bien été ajouté !</div>');
    } catch (Exception $e) {
      print ('<div class="alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>Une erreur est survenue !</div>');
    }
  }
 
 
 
 
$_SESSION['token'] = $client->getAccessToken();
}
 
?>
 
<body style="padding-top: 50px;">
 
 
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="index.php">CRM</a>
        </div>
        <div class="collapse navbar-collapse">
          <ul class="nav navbar-nav navbar-right">
            <?php
            if ($client->getAccessToken()) {
              print "<li><a class='logout' href='".$_SERVER['PHP_SELF']."?logout=1'>Se Déconnecter</a></li>";
            } else {
              $authUrl = $client->createAuthUrl();
              print "<li><a class='login' href='$authUrl'>Connect Me!</a></li>";
            }
 
            ?>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </div>
 
<?php if ($client->getAccessToken()): ?>
    <div class="container">
 
    <div class="row">
      <div class="col-md-3">
 
 
 
<form method="post" action="index.php" role="form">
 
  <div class="page-header">
    <h3>Ajouter un évènement</h3>
  </div>
 
  <div class="form-group">
    <label for="summary">Titre</label>
    <input type="text" class="form-control" id="summary" name="summary" placeholder="Titre">
  </div>
 
  <div class="form-group">
    <label for="desc">Description</label>
    <textarea class="form-control" id="desc" row="5" name="desc" placeholder="Description"></textarea>
  </div>
 
  <div class="form-group">
    <label for="str">Début</label>
     <input type="text" class="form-control datepicker" id="strdate" name="strdate" placeholder="Date de Début">
     <input type="text" class="form-control timepicker" id="strtime" name="strtime" placeholder="Heure de Début">
  </div>
 
  <div class="form-group">
    <label for="end">Fin</label>
     <input type="text" class="form-control datepicker" id="enddate" name="enddate" placeholder="Date de Fin">
     <input type="text" class="form-control timepicker" id="endtime" name="endtime" placeholder="Heure de Fin">
  </div>
  <input type="hidden" id="actionforcrm" name="actionforcrm" value="add">
  <button type="submit" class="btn btn-default btn-block">Envoyer</button>
 
</form>
 
      </div>
 
 
 
      <div class="col-md-9">
 
      <div class="page-header">
        <h3>Calendrier</h3>
      </div>
 
<iframe src="https://www.google.com/calendar/embed?........></iframe>
 
    </div>
 
</div><!-- /.container -->
<?php endif; ?>
 
    <!-- Add Jquery JS -->
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script>window.jQuery||document.write('<script src="http://code.jquery.com/jquery-2.1.1.js"><\/script>')</script>
 
    <!-- Add Bootstrap JS -->
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
 
    <!-- Add Picker JS -->
    <script src="libraries/picker/picker.js"></script>
    <script src="libraries/picker/picker.date.js"></script>
    <script src="libraries/picker/picker.time.js"></script>
    <script src="libraries/picker/legacy.js"></script>
 
    <script type="text/javascript">
      $('.datepicker').pickadate({
        monthsFull: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
        weekdaysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
        today: 'aujourd\'hui',
        clear: 'effacer',
        formatSubmit: 'yyyy/mm/dd',
        labelMonthNext: 'Mois Suivant',
        labelMonthPrev: 'Mois Précédent',
        labelMonthSelect: 'Selection d\'un mois',
        labelYearSelect: 'Selection d\'une année',
        firstDay: 1,
        editable: true,
        formatSubmit: 'yyyy-m-dd',
      hiddenName: true
        });
      $('.timepicker').pickatime({
        interval: 15,
        format: 'HH:i',
        editable: true,
        formatSubmit: 'HH:i',
        hiddenName: true
      });
    </script>
 
</body>
</html>
Quelqu'un aurais une idée de ce.... bug ?