这似乎是一个完全愚蠢的问题,但我正在考虑编写一个将利用谷歌日历 API 的网络应用程序/服务,我需要查看当用户未登录时我是否有能力写入用户日历谷歌帐户。我找不到任何明确的文档来说明我是否可以这样做。我描绘了用户在注册我的网站时同意的授权过程,然后我的应用程序可以将内容添加到谷歌日历中。有谁知道这是否可能?如果是这样,有人可以用一个链接来说明它是如何工作的吗?
提前致谢
这似乎是一个完全愚蠢的问题,但我正在考虑编写一个将利用谷歌日历 API 的网络应用程序/服务,我需要查看当用户未登录时我是否有能力写入用户日历谷歌帐户。我找不到任何明确的文档来说明我是否可以这样做。我描绘了用户在注册我的网站时同意的授权过程,然后我的应用程序可以将内容添加到谷歌日历中。有谁知道这是否可能?如果是这样,有人可以用一个链接来说明它是如何工作的吗?
提前致谢
你的问题的答案是肯定的。使用 OAuth 2 和授权代码流(Web 服务器流),并启用离线。存储刷新令牌(无限期地持续到用户撤销),即使用户当前未登录,您也可以将事件上传到 Google 日历。
更多信息:https ://developers.google.com/accounts/docs/OAuth2WebServer#offline
本文感谢 Ryan Boyd。
您正在考虑“登录”错误。
由于 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 的代码本身就记录了我。
事实上,同一个应用程序可以访问多个帐户并“登录”到所有帐户,只要它具有这样做的身份验证详细信息。
*严格来说,有些人会争辩说“登录”根本不是正确的术语,而是指连接有状态的不同类型的访问机制。无论这种观点如何,我们都使用登录或未登录的比喻,因为用户理解它。