查找活动的参加者

Find Attendees of an Event

我正在尝试显示“public”google 日历中的事件。我的要求是获得与会者的数量(不一定是与会者的姓名)。但是,当我使用日历 API 获取事件时(使用 API 键和 CalendarID);该活动缺少提到的整个与会者部分 here

我的问题:我需要进行身份验证吗?这是否意味着这不能是 public,而显示此信息的 web-pages 将需要“查看者”先向 Google 进行身份验证?

这是我的代码片段(已编辑)...

$.ajax({
  type: 'GET',
  url: encodeURI('https://www.googleapis.com/calendar/v3/calendars/' + calendarId+ '/events?key=' + myKey),
  dataType: 'json',
  success: function (response) {
    console.log(response);
    //here is where I need to get the number of participants
  },
  error: function (error) {
    console.log(error);
    //tell that an error has occurred
  }

这是输出...

{种类:'calendar#events',etag:'"p324e9j5nqabva0g"',摘要:'EDWC Schedule',描述:'',更新:'2022-01-04T08:09:10.933Z', ...} 访问角色:'reader' 默认提醒:(0)[] 描述: '' etag: '""' 项目:(2)[{...},{...}] 0: {种类: 'calendar#event', etag: '""', id: '', 状态: 'confirmed', htmlLink:…} 1: {kind: 'calendar#event', etag: '""', id: '', status: 'confirmed', htmlLink:…} 会议数据:{} 创建:'' 创建者:{} 描述: '' 结束:{dateTime: '2022-01-08T16:00:00+11:00', timeZone: 'Australia/Sydney'} 电子标签:'' 事件类型:'default' 环聊链接:'' html链接:'' iCalUID: '' ID: '' 种类:'calendar#event' 位置:'Australia' 组织者:{email: '', displayName: '', self: true} 顺序:0 开始:{日期时间:'2022-01-08T13:00:00+11:00',时区:'Australia/Sydney'} 状态:'confirmed' 概括: '' 更新:'2022-01-04T08:09:10.933Z' [[原型]]:Object [[原型]]:Object 长度:2 [[原型]]:数组(0) 种类:'calendar#events' 下一个同步令牌:'CIjkzLfSl_UCEAAYASCvg6XIAQ==' 概括: '' 时区:'Australia/Melbourne' 更新:'2022-01-04T08:09:10.933Z' [[原型]]:Object

  • 根据你的问题,答案是肯定的。发送到 Google 日历 API 的每个请求都必须包含授权令牌。现在,该授权并不总是需要一个同意屏幕,它也可以是一个短暂的访问令牌API key (就像你的例子)。我鼓励您阅读有关授权过程的更多信息 here
  • 根据您的代码片段和响应,事件列表位于响应对象的 属性 项内。 Here 您可以找到响应对象的结构,但简而言之,您可以通过循环遍历项目来访问事件,如下所示:
for (var event of response['items']){}

您可以使用 Google Api Node.js Client 以这种方式完成此操作:

Google Calendar Event Attendees                                                                                 Run in Fusebit
const calendarClient = googleClient.calendar('v3');

// Update the below fields with your desired values
const calendarId = 'YOUR_CALENDAR_ID';
const eventId = 'YOUR EVENT_ID';

const response = await calendarClient.events.get({
  calendarId,
  eventId,
});

const attendees = response.data.attendees;