Reputation: 147
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
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
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