Vivek Cu
Vivek Cu

Reputation: 147

Issue with google calendar push notification

I tried implementing the google calendar push notification in my server. Using the outhplayground, i was able to successfully subscribe to the service. I am getting notifications to my registered url when a change takes place in the calendar. The only issue is that the response that i receive doesnt have data. Its an empty response.

Could anyone tell me what the issue would be. I am using PHP code in the backend to access the request hitting my url.

authplayground code:

POST /calendar/v3/calendars/[email protected]/events/watch HTTP/1.1
Host: www.googleapis.com
Content-length: 161
Content-type: application/json
Authorization: Bearer access_token
 {
  "id": "01234267-89a6-cdef-0123456789ab", // Your channel ID.
  "type": "web_hook",
  "address": "https://example.com/response" // Your receiving URL.
 }

Code to accept request:

$json = file_get_contents('php://input');
$request = json_decode($json, true);
$post_request = $_POST;
$get_request = $_REQUEST;

As I was getting an empty response, i tried writing the code to accept any possible way.

Upvotes: 0

Views: 475

Answers (2)

Edward
Edward

Reputation: 2359

You can get the values like this:

$channelId = $_SERVER['HTTP_X_GOOG_CHANNEL_ID'];
$resourceId = $_SERVER['HTTP_X_GOOG_RESOURCE_ID'];

if($channelId) {
    file_put_contents('webhook.txt', $channelId.' ||| '.$resourceId);
}

You can get the different headers here: https://developers.google.com/calendar/v3/push#understanding-the-notification-message-format

Upvotes: 0

Joseph_J
Joseph_J

Reputation: 3669

Google sends the response in the headers as an array.

Try this:

$response = apache_request_headers();

if($response) {

 print_r($response);

}else {

  echo 'The apache_request_headers() did not find any headers.'; //Or google is not sending any.   

}

You may also try:

getallheaders() 

if the apache_request_headers did not work.

Testing this can be difficult. You may want to set up a log that sends any data your page gets to a table on your database so that you can go back and inspect to see what type of progress you are making.

Upvotes: 2

Related Questions