2013-05-09 61 views
2

我正在尝试开发一个Web服务器应用程序,使用C#和.net在内部服务器上运行。我的应用程序的目的是与Google日历交互,读取事件并生成旅行费用报告。OAuth2混乱,C#.Net

基于我的例子中的OAuth2代码段here我能够想出一个主要适用的应用程序。

我说主要是因为沿线的某个地方,所以产生了困惑用户是否已登录并或认证和用户登录

例如: 如果我推出Chrome浏览器,然后访问我的应用程序,一切都很好,但如果我打开另一个浏览器(IE或FF),请登录到另一个Google帐户,然后启动我的应用程序,它给出的报告是针对在Chrome中登录Google的帐户?在第一个浏览器(在这种情况下为Chrome)中,URL包含参数代码,但第二个浏览器中的URL不包含,并且仍然是我的应用程序的URL。

当我在第二个浏览器中使用不同的Google帐户启动应用程序时,看起来身份验证失败(按钮文本保持“验证”状态,但下面提到的日历列表的代码行仍在执行,接收点击“验证”按钮,用返回的数据从在帐户被之后的响应/经第一浏览器登录。

CalendarList response = _service.CalendarList.List().Fetch(); 

我已经尝试没有成功找出为什么这个正在发生,但它开始让我发疯,迄今为止限制了我的应用程序的实用性。

问题可能与存储在我们服务器上的会话状态信息有关吗?我使用的OAuth2代码示例是否过时,如果是的话,我会在哪里找到正确的示例?

任何建议,将不胜感激。

感谢

+0

你是如何托管你的应用程序? IIS Express?如果是这样,当您第二次启动应用程序时,您确定IIS Express正在重新启动吗?您必须明确重新启动它 – Thelonias 2013-05-09 21:10:14

+0

我们在运行Windows Server 2008 Standard的IIS 7上托管应用程序。 – user2367592 2013-05-09 21:56:19

+0

我已经从原始示例中删除了代码,并且我注意到以下声明: private static TasksService _service; //我们不需要为每个客户端提供单独的服务实例。 私人静态OAuth2Authenticator _authenticator; 我的应用程序使用CalendarService而不是TasksService,但我将这些类型保留为静态,如示例代码中所示。但是当我删除静态,我的应用程序似乎正常工作。为什么在这个例子中是否推断出静态是需要的? – user2367592 2013-05-10 03:59:13

回答

0

我user2367592同意,尝试没有一个静态服务测试您的应用程序,并请让我们知道,如果它的工作原理。

无论如何,在版本1.5(目前我们使用1.3)中,我们将摆脱DotNetOpenAuth,并改进整个OAuth2体验,所以 - 对于任何不方便的抱歉。

+0

到目前为止很好,没有静态服务,现在我的应用程序似乎正常工作。 – user2367592 2013-05-10 22:55:44