2012-08-13 71 views
2

我正在编写一个小型客户端,以将计算机上的Outlook日历与用户的Google日历同步。我正在使用.Net(C#)。 我刚刚阅读了关于使用Google API的Google API客户端库访问Google Calendar API并尝试了一些基本的东西。使用用户名/密码访问Google Calendar API

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

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

我希望我的用户在“设置”对话框中输入他的用户名/密码。他的凭证将存储在本地(当然是加密),然后稍后在通过谷歌API访问时使用。我知道这可能是危险的,但是我希望那个决定能够与我同在。

那么,这可能吗?

回答

2

不,这是不可能的。 OAuth的整点是用户永远不会向第三方(您)提供他们的用户名和密码。您唯一能得到的是一个令牌,它允许您随时连接用户可以撤销的连接。 (如果用户更改密码,仍然可以使用相同的已保存令牌并且不需要让用户更新其设置)。

如果您决定通过保存用户名和密码并自行执行“授权”来解决此问题,您将违反API的服务条款,并且会禁止Google(或任何OAuth提供商如果你与其他人一起尝试)不遵守规则。

+0

谢谢。不,我不想为此工作。如果这就是它应该如何完成的,那就这样吧。 但是用户需要多长时间才能访问?这有可能只做一次吗? – user1595494 2012-08-13 14:25:24

+0

是的,你做了一次,然后你保存它在磁盘上给你的令牌,当你再次尝试连接时,首先尝试旧的令牌,并且如果你得到一个错误代码(由于它已经过期或撤销),然后您再次提示授权。大多数情况下,您只需要申请一次授权。 – 2012-08-13 14:32:32

+0

谢谢!在C#中如何做到这一点有什么例子(在用户同意后获取令牌)。我只找到了如何建立连接的例子。 – user1595494 2012-08-14 05:20:47

相关问题