2011-09-09 118 views
11

當我們的最終用戶在我們的網站上執行某些操作時,我們希望使用Google Doc API生成文檔(在我們自己的商業帳戶中)。Google API:如何在不重定向的情況下進行身份驗證?

的問題是,我們試圖實現的OAuth 2.0協議,作爲協議V3.0文檔中的建議。 apiClient ::身份驗證方法執行重定向。這是一個重大的問題,因爲我們的用戶不知道訪問我們自己的業務帳戶....我們不想反正給他們機會;)

(換句話說,我們沒有創造一個允許我們的用戶編輯他們自己的數據,但與我們的數據交互的應用程序,如數據庫。)

我讀過OAuth 2.0的觀點,是爲了避免我們管理用戶的憑證。我個人是O.K.這個概念,但是對我們來說,我們不希望在谷歌帳戶的使用者獲得認證......

那麼,什麼是最好的方式來獲得一個有效的驗證,而不從最終的任何互動用戶?

+2

給休閒讀者。在你開始介入之前。考慮將你的gmail用戶名和密碼硬編碼到應用程序並將Chrome移植到PHP來模擬用戶登錄的替代和較不痛苦的實現。現在重寫符合NSAPI的插件體系結構和虛擬機不會很有趣,但至少比OAuth2更好,如果您沒有閱讀作者建議不要使用http://hueniverse.com/2012/07/oauth-2 -0-and-the-road-to-hell/ –

回答

16

您所描述的並不是如何設計使用三腳OAuth。

3條腿OAuth全部關於委託身份驗證,其中用戶(知道他的密碼)可以授予對應用程序有限且可更新的資源訪問權限。該應用程序永遠不會看到用戶的密碼。有一大堆工作涉及安全地允許應用程序模擬用戶。

你可能想要的是使用(2條腿)的OAuth流,其中consumer_id/CONSUMER_SECRET憑據嵌入到你的應用程序。在這裏,您的應用程序不是模擬您的最終用戶,並且不會涉及瀏覽器重定向。

下面是關於在谷歌Apps的使用模式OAuth一些進一步的信息: http://googleappsdeveloper.blogspot.com/2011/07/using-2-legged-oauth-with-google-tasks.html

這是3- VS 2-模式的OAuth很好的說明: http://cakebaker.42dh.com/2011/01/10/2-legged-vs-3-legged-oauth/

+1

這兩個鏈接都是oauth1,而不是它在OAuth2中所稱的。在OAuth2中,它被稱爲「客戶端憑證」:http://tools.ietf.org/html/rfc6749#section-1.3.4 – drozzy

1

爲什麼不能爲您的企業帳戶獲得一個OAuth授權並讓所有用戶使用該帳戶。由於聽起來您希望每個人都可以訪問某個帳戶的數據,因此可以從最終用戶隱藏詳細信息。

訪問令牌將被所有用戶共享,他們將全部命中同一賬戶的後端,而不爲每個用戶自己的帳戶的任何授權。

+1

聽起來像我需要的,但是OAuth的目標不是重定向來處理身份驗證?我如何「硬編碼」證書以避免最終用戶注意到已經完成了身份驗證? – FMaz008

+0

您在使用系統的其他人之前執行身份驗證。然後你存儲令牌供大家使用。看起來像所有用戶都共享同一個令牌,而不是每個用戶擁有自己的令牌。 –

+0

嗯,好吧,但那仍然不能幫助我。我試圖實現該協議,現在所有用戶都被重定向到一個頁面:***網站正在請求權限: 管理您的文檔 在Google文檔中查看和管理您的文檔 上傳新文檔 (更多信息)。 ***我不希望我的用戶看到... – FMaz008

3

您將需要使用服務帳戶。基本上你很難將這個帳戶的訪問權限編入你的服務器應用程序。然後,您使用共享來訪問您想要的內容的帳戶。例如,您可以使用SERVICE ACCOUNT共享Google文檔或Google Analytics配置文件。

這是建立服務帳戶,並登錄,然後使用它的一個完整的示例實現。

https://gist.github.com/fulldecent/6728257

+0

是的,所有評論者。這是我第三次在回答中發佈此鏈接。是的,這是一個有效的答案。其他問題是http://stackoverflow.com/questions/9932090/google-analytics-api-v3-authorization-to-allow-access-to-my-data/19121069#19121069和http://stackoverflow.com/questions/13111396 /訪問谷歌日曆事件 - 從 - 具有服務帳戶錯誤存取書房 –

相關問題