我收到使用OmniAuth令牌/從服務祕密,並可以將其存儲的用戶,但我堅持就如何實際使用這些來調用服務。如何使用omniauth對服務進行認證調用?
我已經看到了這個問題最接近的事是here但這樣他解決,有感覺不對。如果你知道你在做什麼,我覺得OmniAuth可能會爲你做這一切。
Netflix有一個很好的auth process,所以我希望通過使用OmniAuth從所有這些中抽象出所有這一切。
假設我有一個用戶,如何在調用諸如Netflix的服務中使用這些令牌和祕密?
非常感謝:)
我收到使用OmniAuth令牌/從服務祕密,並可以將其存儲的用戶,但我堅持就如何實際使用這些來調用服務。如何使用omniauth對服務進行認證調用?
我已經看到了這個問題最接近的事是here但這樣他解決,有感覺不對。如果你知道你在做什麼,我覺得OmniAuth可能會爲你做這一切。
Netflix有一個很好的auth process,所以我希望通過使用OmniAuth從所有這些中抽象出所有這一切。
假設我有一個用戶,如何在調用諸如Netflix的服務中使用這些令牌和祕密?
非常感謝:)
嘿,我是OmniAuth寶石的作者。 OmniAuth旨在用於身份驗證過程。對於像Netflix這樣的OAuth提供商來說,這意味着將訪問令牌交換爲訪問令牌,然後用該訪問令牌從API中提取用戶信息。這些一次性呼叫是專門爲每個提供商設計的,並且是而不是,意味着它是給定提供商的通用API客戶端。
你可以做什麼用它來OmniAuth獲得的憑據,然後使用該網站本身另一特定庫(如ruby-netflix
或其他任何東西,我不知道最好的是什麼)撥打電話。您可以通過訪問env['omniauth.auth']['credentials']
來檢索通過認證舞蹈獲得的訪問令牌和祕密,然後使用這些來初始化API客戶端。
您也可以直接使用OAuth庫進行這些調用,但我強烈建議只使用現有的庫,它會更快更輕鬆。所有這些都有意義嗎?
OmniAuth是關於認證的全部內容;你應該看看另一個用於實際調用服務的gem。例如,對於Facebook,我使用的OAuth2寶石和代碼如下所示:
module Facebook
class Client < OAuth2::Client
# Return a new OAuth2::Client object specific to the app.
def initialize
super(
APP_CONFIG[:facebook][:api_key],
APP_CONFIG[:facebook][:app_secret],
:site => 'https://graph.facebook.com',
:parse_json => true
)
end
end
class Token < OAuth2::AccessToken
# Return a new OAuth2::AccessToken specific to the app
# and the user with the given token.
def initialize(token)
super(
Facebook::Client.new,
token
)
end
end
end
access_token = Facebook::Token.new(users_fb_token)
url = "https://graph.facebook.com/#{user_fb_id}/feed"
response = access_token.post(url, :message => "My update")
注意,有流行的服務,如Facebook和Twitter的寶石,可以管理如創建令牌幕後的東西,管理URL等等對於Netflix來說,你可以檢查以下內容:
而且記住,OmniAuth業務數據直接返回給你;你可以自由地存儲和使用它(你會怎麼樣)(Devise有自己的OmniAuth模式,如果你試圖超出範圍,你可能會碰到這種模式)。你鏈接的另一個問題看起來不太過分。
感謝您抽出寶貴時間來回答 - 因爲我覺得一定有辦法做到這一點使用OmniAuth寶石本身我不是這標誌着作爲回答,只是還沒有。 OmniAuth :: Strategy有一個請求方法(http://intridea.github.com/omniauth/OmniAuth/Strategy.html#request-instance_method),看起來像你會用的,但我不知道如何獲得我正在使用的策略實例。這有意義嗎? – 2011-04-23 20:45:43
'request'返回(或創建)認證呼叫期間使用的'Rack :: Request'。例如,請參閱[此行](https://github.com/intridea/omniauth/blob/acfe00f562/oa-oauth/lib/omniauth/strategies/oauth.rb#L52)和[此行](https: //github.com/intridea/omniauth/blob/acfe00f562/oa-core/lib/omniauth/strategy.rb#L132)。 – 2011-04-23 20:58:40
你爲什麼建議不要使用OAuth寶石。簡單? – deepak 2011-11-22 12:05:08