为什么在 NodeJS google 日历 api 的 google 日历事件列表中缺少某些字段?
Why some fields are missing from google calendar event list in NodeJS google calendar api?
我已成功将 NodeJS 后端与 google 日历集成。我成功地从 google 日历中检索了所有事件。
问题如下:并非所有字段都出现在生成的事件列表中。例如:organizer
中的某些字段完全缺失。
这是我的示例回复:
{
"kind": "calendar#event",
"etag": "\"---\"",
"id": "---",
"status": "confirmed",
"htmlLink": "---",
"created": "2022-03-28T15:32:53.000Z",
"updated": "2022-03-28T15:32:53.093Z",
"creator": {
"email": "tornike.shavishvili@ngt.ge",
"self": true
},
"organizer": {
"email": "tornike.shavishvili@ngt.ge",
"self": true
},
"start": {
"dateTime": "2022-03-28T19:30:00+04:00",
"timeZone": "Asia/Tbilisi"
},
"end": {
"dateTime": "2022-03-28T20:30:00+04:00",
"timeZone": "Asia/Tbilisi"
},
"iCalUID": "---",
"sequence": 0,
"reminders": {
"useDefault": true
},
"eventType": "default"
}
这里是根据 google 文档列出的所有参数:Events Resource representations
以上回复来自我的个人日历,访问是使用我的帐户创建的。
我还有与我共享的日历。在这些日历中,当事件由不同的用户创建时, organizer
字段将完全丢失。请参阅下面的示例:
[
{
kind: 'calendar#event',
etag: '"---"',
id: '---',
status: 'confirmed',
htmlLink: '---',
updated: '2022-03-29T06:24:21.598Z',
creator: { email: 'mari.chkonia@signify.ge' },
start: { dateTime: '2022-03-29T14:00:00+04:00', timeZone: 'Asia/Tbilisi' },
end: { dateTime: '2022-03-29T15:00:00+04:00', timeZone: 'Asia/Tbilisi' },
visibility: 'private',
iCalUID: '---'
}
]
我研究了好几天,完全没有头绪:缺少字段的原因是什么?也许集成帐户需要一些额外的权限?
我还想提一下,我是在冒充我的个人邮件,我正在使用 google API 服务帐户身份验证。
谢谢
TL;DR: 这些是 now-defunct Google+.
的残余
总结
根据您的示例,organizer
下缺少的字段是 displayName
和 id
。
您分享的 documentation 提到 organizer.displayName
字段仅显示 如果可用 。这与 organizer.id
字段相同,应该 return “配置文件 ID”。
问题是:什么决定了这些字段的可用性,什么是“配置文件 ID”?
organizer.displayName
字段应该是可写的,所以我尝试通过 insert API 手动设置它,因为在 [= =62=]。 API 调用成功,但我之后尝试检索事件时仍然没有显示该字段。
这导致我在 Google 的问题跟踪器中发现 report 也声称此字段何时被 returned 不一致。 displayName
似乎来自组织者的 Google+ 个人资料(如果存在)。这也将解释什么是“配置文件 ID”。 Googler 在关闭报告之前的最终回复如下:
From what I can tell this behavior is consistent with the Google Calendar UI, and there are times when the user's name is not shared. If interested I can work to determine the exact set of rules that govern this behavior, but in general it is working as intended.
大概某些“用户名未共享的时间”类似于 Google+ 个人资料是私有的。由于没有人要求澄清这些规则,我们无法再确定它们。
Google+ 及其 API 在 Google 的问题跟踪器中 shut down and replaced by Currents in 2019. This would mean that these fields are just vestiges probably left to avoid breaking old code. If you're interested in correcting the documentation or giving these fields a new purpose you could try to submit a request。
编辑: 我发现了一种情况 displayName
仍然会出现。如果用户拥有 Currents public 个人资料,您将能够在您的回复中看到该字段。请注意,这不是追溯性的,因此如果用户创建了一个配置文件,它不会出现在过去的事件中。此外,Currents 仅适用于付费 Google Workspace 帐户。
我已成功将 NodeJS 后端与 google 日历集成。我成功地从 google 日历中检索了所有事件。
问题如下:并非所有字段都出现在生成的事件列表中。例如:organizer
中的某些字段完全缺失。
这是我的示例回复:
{
"kind": "calendar#event",
"etag": "\"---\"",
"id": "---",
"status": "confirmed",
"htmlLink": "---",
"created": "2022-03-28T15:32:53.000Z",
"updated": "2022-03-28T15:32:53.093Z",
"creator": {
"email": "tornike.shavishvili@ngt.ge",
"self": true
},
"organizer": {
"email": "tornike.shavishvili@ngt.ge",
"self": true
},
"start": {
"dateTime": "2022-03-28T19:30:00+04:00",
"timeZone": "Asia/Tbilisi"
},
"end": {
"dateTime": "2022-03-28T20:30:00+04:00",
"timeZone": "Asia/Tbilisi"
},
"iCalUID": "---",
"sequence": 0,
"reminders": {
"useDefault": true
},
"eventType": "default"
}
这里是根据 google 文档列出的所有参数:Events Resource representations
以上回复来自我的个人日历,访问是使用我的帐户创建的。
我还有与我共享的日历。在这些日历中,当事件由不同的用户创建时, organizer
字段将完全丢失。请参阅下面的示例:
[
{
kind: 'calendar#event',
etag: '"---"',
id: '---',
status: 'confirmed',
htmlLink: '---',
updated: '2022-03-29T06:24:21.598Z',
creator: { email: 'mari.chkonia@signify.ge' },
start: { dateTime: '2022-03-29T14:00:00+04:00', timeZone: 'Asia/Tbilisi' },
end: { dateTime: '2022-03-29T15:00:00+04:00', timeZone: 'Asia/Tbilisi' },
visibility: 'private',
iCalUID: '---'
}
]
我研究了好几天,完全没有头绪:缺少字段的原因是什么?也许集成帐户需要一些额外的权限?
我还想提一下,我是在冒充我的个人邮件,我正在使用 google API 服务帐户身份验证。
谢谢
TL;DR: 这些是 now-defunct Google+.
的残余总结
根据您的示例,organizer
下缺少的字段是 displayName
和 id
。
您分享的 documentation 提到 organizer.displayName
字段仅显示 如果可用 。这与 organizer.id
字段相同,应该 return “配置文件 ID”。
问题是:什么决定了这些字段的可用性,什么是“配置文件 ID”?
organizer.displayName
字段应该是可写的,所以我尝试通过 insert API 手动设置它,因为在 [= =62=]。 API 调用成功,但我之后尝试检索事件时仍然没有显示该字段。
这导致我在 Google 的问题跟踪器中发现 report 也声称此字段何时被 returned 不一致。 displayName
似乎来自组织者的 Google+ 个人资料(如果存在)。这也将解释什么是“配置文件 ID”。 Googler 在关闭报告之前的最终回复如下:
From what I can tell this behavior is consistent with the Google Calendar UI, and there are times when the user's name is not shared. If interested I can work to determine the exact set of rules that govern this behavior, but in general it is working as intended.
大概某些“用户名未共享的时间”类似于 Google+ 个人资料是私有的。由于没有人要求澄清这些规则,我们无法再确定它们。
Google+ 及其 API 在 Google 的问题跟踪器中 shut down and replaced by Currents in 2019. This would mean that these fields are just vestiges probably left to avoid breaking old code. If you're interested in correcting the documentation or giving these fields a new purpose you could try to submit a request。
编辑: 我发现了一种情况 displayName
仍然会出现。如果用户拥有 Currents public 个人资料,您将能够在您的回复中看到该字段。请注意,这不是追溯性的,因此如果用户创建了一个配置文件,它不会出现在过去的事件中。此外,Currents 仅适用于付费 Google Workspace 帐户。