2015-01-09 160 views
0

我遇到了一個問題,我可以在作爲控制檯應用程序運行時進行身份驗證。但是,當我使它成爲Windows服務並安裝它時,我無法進行身份驗證。我使用了日誌調試語句來隔離問題。C#Google API身份驗證

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
     new ClientSecrets { 
      ClientId = "myClientId", 
      ClientSecret = "myClientSecret" 
     }, 
     new[] { 
      CalendarService.Scope.Calendar 
     }, 
     "myProjectName", 
     CancellationToken.None, 
     new FileDataStore("myProjectName") 
).Result; 

問題出在上述說法。這被try/catch包圍,但沒有拋出異常。在此之後立即有一個日誌語句,但它永遠不會執行。我最好的猜測是問題出在FileDataStore上。默認情況下,Google存儲的是%AppData%,當我手動運行它時,我的程序可以找到它,但是當它是Web服務時,我不得不給它一個類似本地系統或本地服務的帳戶類型,我需要將其設置爲用戶I認爲。我的猜測是,這可以防止它找到%AppData%中的文件。有沒有人有任何建議如何幫助Windows服務找到%AppData%?或者在這種情況下Windows服務是一種糟糕的方法?

非常感謝您的幫助。

回答

1

使用此方法僅在您有UI時纔有效,因爲它將啓動瀏覽器以請求驗證。對於一項服務,您必須要求提供另一種暗示在服務器中安裝證書的密鑰。這在OAuth2ServiceAccount中有解釋。