2

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

提前致谢

4

2 回答 2

1

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

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

本文感谢 Ryan Boyd。

于 2012-08-16T22:10:33.810 回答
1

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

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

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

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

例如:

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

我的邮件客户端登录到谷歌日历到我用于私人物品的帐户。

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

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

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

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

所以,我在 Thunderbird 上“登录”了,因为使用 API 的代码本身就记录了我。

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

*严格来说,有些人会争辩说“登录”根本不是正确的术语,而是指连接有状态的不同类型的访问机制。无论这种观点如何,我们都使用登录或未登录的比喻,因为用户理解它。

于 2012-08-13T16:43:01.790 回答