1

问题:

  • 使用服务用户身份验证并插入/更新日历事件时,不会覆盖提醒
  • 从提醒中插入/更新事件的正确 APART 始终为默认值(电子邮件 > 10m,弹出窗口 > 30m)。

语境:

  • Node.js 使用下面的标准库
  • 已下载的有效服务帐号credentials.json
  • 服务帐户 ( ) 对日历service-user-account@myapp.iam.gserviceaccount.com具有​​写入权限myuser@gmail.com

代码:

const {google} = require('googleapis')
const {auth} = require('google-auth-library')
const credentials = require('./credentials.json')

const addEvent = async (auth) => {
  const calendar = google.calendar({version: 'v3', auth})
  const insertRes = await calendar.events.insert({
    calendarId: 'myuser@gmail.com',
    resource: {
      summary: 'Test API',
      start: {
        dateTime: '2020-06-02T12:55:00.000',
        timeZone: 'Europe/London'
      },
      end: {
        dateTime: '2020-06-02T12:56:00.000',
        timeZone: 'Europe/London'
      },
      reminders: {
        useDefault: false,
        overrides: [
          {method: 'popup', 'minutes': 5}
        ]
      }
    }
  })
  console.log('insertRes', insertRes.data)
}

const getAuth = async () => {
  let client = auth.fromJSON(credentials)
  client.scopes = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.events']
  return client
}
const init = async () => {
  const auth = await getAuth()
  await addEvent(auth)
}
init()

响应:来自 console.log(insertRes)

{ kind: 'calendar#event',
  etag: '"3182200547452000"',
  id: '6063phndufgppo8rfev1XXXXXX',
  status: 'confirmed',
  htmlLink:
   'https://www.google.com/calendar/event?eid=NjA2M3BobmR1ZmdwcG84cmZldjFjdWh2YzQgZGFuZ2FyZmllbGR1a0Bnb29nbGVtYWlsXXXXXX',
  created: '2020-06-02T12:17:53.000Z',
  updated: '2020-06-02T12:17:53.768Z',
  summary: 'Test API',
  creator:
   { email: 'service-user-account@myapp.iam.gserviceaccount.com' },
  organizer: { email: 'myuser@googlemail.com', self: true },
  start:
   { dateTime: '2020-06-02T12:55:00+01:00',
     timeZone: 'Europe/London' },
  end:
   { dateTime: '2020-06-02T12:56:00+01:00',
     timeZone: 'Europe/London' },
  iCalUID: '6063phndufgppo8rfev1XXXXXX@google.com',
  sequence: 0,
  reminders: { useDefault: false, overrides: [{"method":"popup","minutes":5}] }
}

希望有人可以为我阐明这个问题。

谢谢

4

2 回答 2

1

服务帐户用户或多或少和您一样。只能为当前用户修改提醒,不能为其他用户修改提醒。

提醒已设置,但针对“错误”用户。尝试使用服务帐户用户通过 api 获取事件,您将在那里看到提醒。通过 UI 向自己的用户添加提醒,然后再次执行 api 请求,您将无法看到新的提醒。

如果您想为自己设置事件提醒,请务必使用您自己的帐户来修改事件,例如使用 OAuth 2.0。

于 2020-07-09T11:47:16.003 回答
0

这似乎是一个错误,已Google 的公共问题跟踪器上报告

给它一个“星”以表明更多的人受到影响并接收有关该问题的更新。

于 2020-06-02T13:16:06.677 回答