2013-05-09 88 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