【问题标题】:Access Google Calendar API with username/password使用用户名/密码访问 Google Calendar API
【发布时间】:2012-08-09 17:53:15
【问题描述】:

我正在编写一个小客户端来将机器上的 Outlook 日历与用户的谷歌日历同步。我正在使用 .Net (C#)。 我刚刚阅读了有关使用适用于 .NET 的 Google API 客户端库访问 Google Calendar API 的信息,并尝试了一些基本的东西。

现在关于授权,据我了解,新的“OAuth 2.0”授权需要“用户同意”,这意味着用户被定向到谷歌页面,他们必须明确允许我的应用程序访问他们的日历。 好像这种用户交互还不够,作为一名程序员,我必须处理“访问令牌”或“刷新令牌”以及所有这些东西。

现在我的问题是: 真的没有更简单的方法可以让已安装的应用程序与 google API 通信以访问用户的日历吗?

我希望我的用户在“设置”对话框中输入他的用户名/密码。他的凭据将存储在本地(当然是加密的),然后在以后通过谷歌 API 进行每次访问时使用。我知道这可能很危险,但我希望这个决定由我自己决定。

那么,这可能吗?

【问题讨论】:

    标签: c# .net api


    【解决方案1】:

    不,那是不可能的。 OAuth 的整点是用户永远不会向第三方(您)提供他们的用户名和密码。您获得的唯一东西是一个允许您连接的令牌,用户可以随时撤销该令牌。 (另外,如果用户更改了他的密码,您仍然可以使用相同的保存令牌,而无需让用户更新他们的设置。

    如果您决定通过保存用户名和密码并自行执行“授权”来“解决”此问题,您将违反 API 的 TOS,并且您的应用程序将被 Google(或任何 OAuth 提供商,如果你和别人一起尝试)因为不遵守规则。

    【讨论】:

    • 谢谢。不,我不想解决这个问题。如果这就是它应该这样做的方式,那就这样吧。但是用户必须多久允许一次访问?是否可以只执行一次?
    • 是的,你做了一次,然后你把它给你的令牌保存在磁盘上,当你第二次尝试连接时,你先尝试旧的令牌,如果你得到一个错误代码返回(由于它已过期或撤销)然后您再次提示授权。大多数情况下,您只需要请求一次授权。
    • 谢谢!是否有任何关于如何在 C# 中执行此操作的示例(在用户同意后获取令牌)。我只找到了如何建立连接本身的示例。
    • 另外,有没有比在用户登录时弹出浏览器窗口然后必须将代码复制/粘贴(!)到我的应用程序更优雅的方法?
    • 对于示例代码,不,我没有。但是您可以在 WebBrowser 控件中显示授权页面。在他们授权后,您可以让 Google 在 URL 或网页标题中返回密钥,这样用户就不需要复制任何内容。
    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 2017-06-26
    • 2017-02-16
    • 2019-01-30
    • 2015-03-13
    • 2015-03-27
    • 2014-01-08
    • 2013-03-19
    相关资源
    最近更新 更多