Google日历推送通知问题

时间:2018-03-28 07:33:32

标签: php google-api google-calendar-api

我尝试在我的服务器中实施Google日历推送通知。 使用outhplayground,我能够成功订阅该服务。 当日历中发生更改时,我会收到注册网址的通知。 唯一的问题是我收到的回复没有数据。这是一个空洞的回应。

有谁能告诉我这是什么问题。我在后端使用PHP代码来访问命中我的网址。

authplayground代码:

POST /calendar/v3/calendars/calendarname@gmail.com/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.
 }

接受请求的代码:

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

当我得到一个空的回复时,我尝试编写代码以接受任何可能的方式。

2 个答案:

答案 0 :(得分:2)

Google将标题中的响应作为数组发送。

试试这个:

$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.   

}

您也可以尝试:

getallheaders() 

如果apache_request_headers不起作用。

测试这可能很困难。您可能希望设置一个日志,将您的页面获取的任何数据发送到数据库中的表,以便您可以返回并检查以查看您正在进行的进度类型。

答案 1 :(得分:0)

您可以获取如下所示的值:

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

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

您可以在此处获得其他headershttps://developers.google.com/calendar/v3/push#understanding-the-notification-message-format