2011-05-02 47 views
5

我能用omniauth設計(OAuth的不OpenID的)和devise.rb配置是這樣的:谷歌的OAuth不斷請求訪問

config.omniauth :google, KEY, SECRET 

,並正確地做重定向到谷歌請求許可(並返回)...

但不幸的是,它總是這樣做。它應該(我相信)知道我剛剛授權使用谷歌,並應在第一次後跳過重定向到谷歌。任何關於如何使這項工作的建議?

我在談論的權限是:「該網站blah.com正在請求訪問您的Google帳戶以獲取下面列出的產品」。我不希望這個頁面總是重新出現。

回答

1

您需要自己實現回調 - 默認情況下,Devise和Omniauth都不會爲您提供這些回調。它會負責將用戶發送到您的OAuth端點,並確保他返回,但不會消耗發送和/或登錄用戶的信息。

這取決於您做這些事情。

設計對創建一個簡單的回調控制器維基頁面:https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

瑞恩·貝茨有Railscast做一個更通用的回調控制器:http://railscasts.com/episodes/236-omniauth-part-2

而且我已經寫了一通用回調控制器,以及:http://blog.impaled.org/code/2011/2/devise-1-2-with-omniauth-on-rails.html

+0

我已經有一個回叫。不幸的是,在回調控制器被擊中的時候,它已經進入了google請求訪問的頁面。我必須假設,如果我有一些cookie設置,我可以在此頁面之前進行回調,或者以某種方式monkeypatch設計忽略進入該頁面。 – 2011-06-18 21:44:05

+0

一旦您獲得許可,Google的授權頁面不應再顯示。當然,它會重定向到Google,但如果您之前已經登錄並獲得了許可,它應該直接重定向到您的回撥控制器。 我從來沒有遇到過這樣的問題。如果你在某個地方部署應用程序,我可以看看。 – 2011-06-19 09:57:46

+0

這是我無法在其他地方部署的私人應用程序之一。您是否碰巧知道設計代碼是檢查cookie還是僅僅知道當前登錄的用戶是否已根據其來自的URL進行「授權」? – 2011-06-19 16:06:39

1

我升級到最新的omniauth/devise寶石,並使用google_oauth2寶石(這太棒了!)。

正因爲如此,我能夠通過我的問題,因爲創業者的寶石添加parm,以防止重新授權。

here

0

隨着omniauth - 谷歌 - 的oauth2我發現你必須設置

:approval_prompt => '' 

作爲一個選項在您的線路

provider :google_oauth2, ... 

,或者它默認爲 '力',而不是,這對我造成了同樣的問題。

從閱讀approval_prompt部分此頁面上演繹出這樣的:https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

0

我有問題,它會向用戶請求每個日誌在相同的權限。我解決它通過在config文件夾添加access_type: "offline"approval_prompt: ""devise.rb如下:

config.omniauth :google_oauth2, 'KEYHERE', 'SECRET_HERE', { access_type: "offline", approval_prompt: "", scope: 'userinfo.email,userinfo.profile' } 

範圍上面讓我看到有關用戶和他們的電子郵件地址的基本信息。

希望這會有所幫助。

0

您必須通過Google API控制檯啓用「通訊錄API」和「Google+ API」