2012-09-08 93 views
1

我在嘗試瞭解是否可以從傳統Windows服務訪問Google雲端硬盤,而不涉及用戶。從Windows服務訪問Google雲端硬盤

https://developers.google.com/drive/quickstart的指南,我已經能夠創造出文件上載到谷歌雲端硬盤中的命令行應用程序。但是,這個應用程序啓動Web瀏覽器並將我重定向到Google的授權服務器頁面,該頁面爲我提供了必須在命令行應用程序中輸入的授權代碼。顯然,這對於作爲Windows服務運行的應用程序不起作用,Windows服務會嘗試在不同的時間將文件上傳到Google Drive。在我的情況下,根本不可能讓用戶不止一次參與,而且這將在設置過程中進行。

據我所知道的,授權碼有效期只有很短的時間週期。如果我稍後嘗試重用它,我會得到一個異常。

https://developers.google.com/accounts/docs/OAuth2,有可能的身份驗證方案的說明。唯一與我想要做的事情相符的是「服務帳戶」方案。這允許應用程序在不涉及用戶的情況下訪問Google服務。但是,根據同一頁面,使用服務帳戶的應用程序無法訪問數據。

我得到的印象是,谷歌不想與舊式認證(用戶名/密碼),由於安全問題,這可能會導致打擾。從安全角度來看,存儲用戶/傳入配置當然不是很好。我是否錯過了某些東西,或者是我正在嘗試做什麼而不支持?

回答

2

快速啓動應用是一個簡單的命令行應用程序,削減一些角落,使入門體驗更快,但它仍然可以作爲一個起點,一個Windows服務。

如果您不想啓動瀏覽器,則必須刪除對Process.Start(authUri.ToString())的調用,並可能將授權url打印到控制檯,以便用戶可以複製該鏈接。

你只需要執行一次此手動工序,只要應用商店刷新令牌和正在交換接入代碼時返回的訪問令牌。訪問令牌在一小時後過期,但刷新令牌永不過期(除非用戶手動撤銷對應用的訪問),後者是用於請求新訪問令牌的訪問令牌。

的文檔還包括一個完整的.NET應用程序,顯示如何存儲的令牌,以及如何處理各種授權邊緣情況:https://developers.google.com/drive/examples/dotnet

相關問題