<a href='#' id='authorize-button' onclick='handleAuthClick();'>Login</a>
<a href='#' onclick='makeApiCall();'>Calendrier</a>
<div id="divretour">
</div>
<script type="text/javascript">
var oauthToken;
var scopes = 'https://www.googleapis.com/auth/calendar';
var clientId = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com';
var apiKey = 'XXXXXXXXXXXXXXXXXXX__J5GycyeRqw5uowJdwMfO8';
var calendarId = 'mymail...@gmail.com';
var start_date = new Date();
var end_date = new Date();
end_date.setDate(start_date.getDate() + 1);
var url = 'https://www.googleapis.com/calendar/v3/calendars/'+calendarId+'/events?timeMin='+start_date.toISOString()+'&timeMax='+end_date.toISOString();
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
function makeApiCall(){
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
donnees = JSON.parse(leselect);
var contenu="";
for (var i = 0; i < donnees.items.length; i++) {
contenu+=donnees.items[i].summary+"<br />";
}
document.getElementById("divretour").innerHTML = contenu;
}
}
oauthToken = gapi.auth.getToken();
xhr.open("GET",url,true);
xhr.setRequestHeader('Authorization', 'Bearer ' + oauthToken.access_token);
//xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.send();
}
function handleClientLoad() {
gapi.client.setApiKey(apiKey);
window.setTimeout(checkAuth,1);
checkAuth();
}
function checkAuth() {
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult);
}
function handleAuthResult(authResult) {
var authorizeButton = document.getElementById('authorize-button');
if (authResult) {
authorizeButton.style.visibility = 'hidden';
makeApiCall();
} else {
authorizeButton.style.visibility = '';
authorizeButton.onclick = handleAuthClick;
}
}
function handleAuthClick(event) {
gapi.auth.authorize(
{client_id: clientId, scope: scopes, immediate: false}, handleAuthResult);
return false;
}
</script>
<script src="https://apis.google.com/js/client.js?onload=handleClientLoad"></script>
And yes, it works ! I get a token in the console. It looks like this :<html>
<head>
<script src="https://apis.google.com/js/client.js"></script>
<script>
function auth() {
var config = {
'client_id': 'xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com',
'scope': 'https://www.googleapis.com/auth/calendar'
};
gapi.auth.authorize(config, function() {
console.log('login complete');
console.log(gapi.auth.getToken());
});
}
</script>
</head>
<body>
<button onclick="auth();">Authorize</button>
</body>
</html>
access_token | "xx29.xXXXX1xxXxx9XXXxxXX...oXfyMjv85iLiZKceGgolJwg" | ||
client_id | "xxxxxxxxxxx-xxxxxxxxxxxxxxx...s.googleusercontent.com" | ||
cookie_policy | undefined | ||
expires_at | "1416922787" | ||
expires_in | "3600" | ||
g-oauth-window | Window | ||
g_user_cookie_policy | undefined | ||
issued_at | "1416919187" | ||
response_type | "token" | ||
scope | "https://www.googleapis.c.../auth/calendar.readonly" | ||
state | "" | ||
status | Object { google_logged_in=false, signed_in=true, method="PROMPT"} | ||
token_type | "Bearer" |
{ "kind": "calendar#events", "etag": "\"0000001950412000\"", "summary": "xxxxx...@yahoo.fr", "updated": "2014-11-25T18:59:10.412Z", "timeZone": "UTC", "accessRole": "owner", "defaultReminders": [ { "method": "popup", "minutes": 30 } ], "nextSyncToken": "XXXX_XyXxxXXXXX_XxXXxXXXX=", "items": [] }
var scopes = 'https://www.googleapis.com/auth/calendar';
var clientId = 'xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
var calendarId = 'primary'; // xxx...@gmail.com
var url = 'https://www.googleapis.com/calendar/v3/calendars/'+calendarId+'/events';
function auth() {
var config = {
'client_id': clientId,
'scope': scopes
};
gapi.auth.authorize(config, function() {
console.log('login complete');
oauthToken = gapi.auth.getToken();
console.log(oauthToken);
gapi.client.load('calendar', 'v3', function() {
var request = gapi.client.calendar.events.list({'calendarId': calendarId });
request.execute(function(resp) {
document.getElementById('events').innerHTML=resp.length;
});
});
});
}
</script>
</head>
<body>
<button onclick="auth();">Authorize</button>
<div id="events"></div>
</body>
</html>
Thank you very much for your time and your answer. This is a much simpler example, without distracting elements.
...
...