Google Calendar API。当用户未登录时,我可以写入用户日历吗?

时间:2012-08-13 16:25:14

标签: google-calendar-api google-api-client

这可能看起来像一个完全愚蠢的问题,但我正在寻找一个将使用谷歌的日历API的网络应用程序/服务,我需要看看当用户不是时我是否有能力写入用户日历登录谷歌帐户。我找不到任何明确的文件说明我是否可以这样做。我描绘了授权过程,当用户注册我的网站时,用户同意这一点,然后我的应用可以添加到谷歌日历的东西。有谁知道这是否可能?如果是这样,有人可以用一个链接来说明这是如何工作的吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

你正在考虑“登录”错误。

由于Web连接不会在请求之间保持不变,因此任何网站或Web服务都会检查标头,例如Authorization标头和/或Cookie标头(具体取决于使用的授权方法) ),包含每个请求并将请求与用户匹配。

因此登录*意味着Web客户端(浏览器或其他)设置为在发出请求时使用与特定用户相关的详细信息。

使用API​​时,您发送的授权信息正在执行相同的工作。因此,当用户使用您的API时,他们 通过您的API登录,无论他们是通过网页还是其他应用程序登录。

E.g:

我的网络浏览器目前已登录到我用于工作的帐户。

我的邮件客户端已登录到我用于私有内容的帐户的Google日历。

当我查看谷歌日历时,我发现我没有任何日历(我不在我的工作帐户上使用它)。

当我看到Thunderbird时,我会看到我的日历。

如果我查看浏览器和邮件客户端发送的流量,我看到的标题如下:

Authorization: GoogleLogin auth=...stuff I'm not going to share or it would help you impersonate me

所以,我在Thunderbird上“登录”了,因为使用API​​的代码会记录我自己。

实际上,只要具有这样的身份验证详细信息,相同的应用程序就可以访问多个帐户并“登录”到所有帐户。

*严格来说,有些人认为“登录”根本不是正确的术语,并且指的是连接上存在状态的不同种类的访问机制。无论是什么意见,我们使用是否登录的比喻,因为用户理解它。

答案 1 :(得分:1)

你的问题的答案是肯定的。启用离线时,使用OAuth 2和授权代码流(Web服务器流)。存储刷新令牌(无限期持续到用户撤销为止),即使用户当前未登录,您也可以将事件上传到Google日历。

更多信息:https://developers.google.com/accounts/docs/OAuth2WebServer#offline

Ryan Boyd对此笔记的肯定。