2013-06-24 77 views
1

我正在使用.NET的MirrorQuickStart項目,並且遇到刷新令牌的問題。從我所知道的情況來看,當「通知」操作進入時間線訂閱更新時,它不會被使用。用於.NET和刷新令牌的Glass快速入門

將應用程序發佈到開發服務器,基本上與更新正確的ID和配置信息的情況不同,「通知」操作在第一個小時內運行,但在此之後,它會停止響應,直到我刷新網頁並重新認證。

我檢查了數據庫服務器上的StoredCredentials表,它具有填充的UserId,AccessToken和RefreshToken值。我還在標準應用程序流程中創建了一個新的鏡像服務(因爲我不知道如何調試通知流程並查看發生的任何實際錯誤消息),並且每次都會在服務上看到AccessToken和RefreshToken。

MirrorService service = new MirrorService(new BaseClientService.Initializer 
{ 
    Authenticator = Utils.GetAuthenticatorFromState(
      Utils.GetStoredCredentials(userId)) 
}); 

我已經審查了驅動器的DrEdit項目和流程似乎是基本相同的的GEtAuthenticatorFromStateGetStoredCredentials方法上。

這個問題似乎與我遇到的問題最直接相關,但是就鏡像項目而言,答案沒有意義。

How to generate access token using refresh token through Google Drive SDK in .NET?

有一定有一些簡單的我失蹤 - 只是不知道,因爲我是相當新的OAuth的流動。

謝謝。

+0

您是否在通知端點上收到特定錯誤? – Alain

+0

一直試圖調試更多 - 我認爲這個邏輯應該適用於NotifyController,但我修改了MainController以使用由我包含在原始文章中的代碼創建的「服務」(由UserId硬編碼用於測試目的)。當我嘗試檢索訂閱列表時,出現401 Unauthorized錯誤。理論上,這應該與NotifyController嘗試使用的「服務」相同。 – Kyle

回答

1

從其他SO回答您聯繫,這似乎解決Model/Utils.cs問題:

 /// <summary> 
     /// Returns the IAuthorizationState stored in the StoredStateClient instance. 
     /// </summary> 
     /// <param name="provider">OAuth2 client.</param> 
     /// <returns>The stored authorization state.</returns> 
     static public IAuthorizationState GetState(StoredStateClient provider) 
     { 
      provider.RefreshToken(provider.State); 
      return provider.State; 
     } 

注意添加一行:provider.RefreshToken(provider.State)。目前還不清楚爲什麼需要撥打RefreshToken,因爲這應該由庫自動完成......

+0

謝謝 - 我會試試看看會發生什麼。要回答您以前的問題,我可以從通知端點獲得錯誤。以下是Google.Apis.Requests.Request.AsyncRequestResult.GetResponse()處的堆棧跟蹤: 位於Google.Apis.Requests.ClientServiceRequest'1.GetResponse() 處的Google.Apis.Requests.ClientServiceRequest'1.1.Fetch() 在MirrorQuickstart.Controllers.NotifyController.HandleTimelineNotification(通知通知,MirrorService服務) System.Net.WebException:遠程服務器返回錯誤:(401)未經授權。 – Kyle

+0

該錯誤似乎與未被刷新的令牌有關。我仍然不確定爲什麼顯式調用需要發生,但會調查更多。 – Alain

+0

哈 - 去圖,只要我開始測試這個,我的日常使用配額是在極限!我會明天檢查一下事情,並希望將其標記爲答案。再次感謝您的幫助,我很感激。 – Kyle