【问题标题】:google calendar api watch java script谷歌日历 api 手表 javascript
【发布时间】:2016-12-08 00:12:47
【问题描述】:

我目前正在使用谷歌日历 api 并尝试在 javascript 中编写一个函数,该函数使用 calendar.events.watch 函数以便在用户日历中有更新时进行更新(取消、创建或修改) .

我正在尝试查看我获得的信息,以了解此服务是否与我的需求相关 - 了解是否发生了变化,甚至 - 发生了什么 - 变化。

我正在打开一个频道并提供数据,但是当我更改我的日历时,我没有得到任何响应,如下所述: https://developers.google.com/google-apps/calendar/v3/reference/events/watch

这是我写的函数:

function watchEvents(token) {
  var calendar = google.calendar('v3');
  var oauth2ClientPromise = createAuthObject(token);
  console.log('step 1')
  return oauth2ClientPromise
  .then(function (authObject){
    console.log('step 3')
    return Q.nfcall(calendar.events.watch, {
      auth: authObject,
      calendarId: '*I put here my email*',
      singleEvents: true,
      orderBy: 'startTime',
      resource:{
        id: channel_id,
        token: 'email=' + '* placed my email*',
        type: 'web_hook',
        address: '*placed my address*',
        params: {
          ttl: '36000'
        }
      }

    });
  })
  .catch(function(err) {
console.log('step 2');
  });
}

我运行了代码:

    calendar.watchEvents(token_parsed).then((result)=>console.log("result"))
.catch(err=>console.log(err));

我没有收到任何错误,它输入了我的“第 1 步”和“第 3 步”标志,但是当我更改日历中的事件时,我没有收到任何通知。

这是我在控制台中得到的:

第 1 步 监听 8080 端口的示例应用程序! 第 3 步 结果

有谁知道我应该从 API 获得什么样的信息?它看起来如何?什么我的没用?

【问题讨论】:

  • Welcome to Stack Overflow。我编辑了您的问题,在评论中添加了您所做的代码,您会看到,cmets 不适用于添加代码。查看此link 了解如何改进您的问题。
  • 您链接到的页面会告诉您响应应该是什么样子,页面的“响应”部分中有一个示例...
  • ...与此同时,您似乎向 API 发送了一个名为 start_time 的字段,这是它没有预料到的。再次检查链接的“请求”部分,看看哪些参数是有效的。

标签: javascript google-api google-calendar-api


【解决方案1】:

但是当我更改日历中的事件时,我没有得到任何 通知

Making watch requests 是通过向资源的 watch 方法发送 POST 请求来启用的,如指南中所述。

还要注意:

"每个通知渠道都与特定用户相关联 和一个特定的资源(或一组资源)。监视请求将 除非当前用户拥有或有权 访问此资源。”

例子

开始观察给定日历上一系列事件的变化:

    POST https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events/watch
    Authorization: Bearer auth_token_for_current_user
    Content-Type: application/json

{
  "id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
  "type": "web_hook",
  "address": "https://sampledomain.com/notifications", // Your receiving URL.
  ...
  "token": "target=myApp-myCalendarChannelDest", // (Optional) Your channel token.
  "expiration": 1426325213000 // (Optional) Your requested channel expiration time.
  }
}

您可以从包括Receiving Notifications tuts 在内的官方指南中阅读更多内容。

【讨论】:

  • 在哪里可以找到types 的列表我在文档中找不到它:(
  • @noogui 当我创建一个新的 calendarId 并添加一个事件时,频道没有通知我。你知道为什么会这样吗? (在主 calendarId 中效果很好)
猜你喜欢
  • 2016-04-15
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 2016-01-03
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多