[英]Yahoo API with Ruby on Rails and OAUTH2
我有一個RoR網站,可以從證券交易所獲取數據,並且我正在通過Yahoo API使用Yahoo的財務表。 我需要授權才能完全訪問YQL,這需要我使用Oauth2。 我需要獲得OAuth訪問Yahoo的幫助。
這是我嘗試過的:
client = OAuth2::Client.new(oauth_consumer_key,oauth_consumer_secret, {
access_token_path: '/oauth/v2/get_token',
authorize_path: '/oauth/v2/request_auth',
authorize_url: 'https://api.login.yahoo.com/oauth/v2/request_auth',
request_token_path: '/oauth/v2/get_request_token',
site: 'https://api.login.yahoo.com'
})
puts client.auth_code.authorize_url( redirect_uri: "http://localhost:3000")
code = gets.chomp
token = client.auth_code.get_token(code, redirect_uri: "http://localhost:3000")
我不知道我必須使用哪個“代碼”。 Authorize_url向我返回此URL ,但尚不清楚“代碼”是什么。 這個問題啟發了我。
不要問我為什么,但是Yahoo很難找到他們的OAuth 2.0文檔。 我找到了 !
同樣,相當“很棒”,您無需指定用戶就獲得“離線”權限即可獲得refresh_token
。 我認為,這是Yahoo的安全隱患。 Google和Microsoft都需要明確的“離線”訪問權限。
require 'oauth2'
OAuth2::Client.new(Rails.application.secrets.yahoo_consumer_id, Rails.application.secrets.yahoo_consumer_secret, site: 'https://api.login.yahoo.com', authorize_url: '/oauth2/request_auth', token_url: '/oauth2/get_token')
client.auth_code.authorize_url(redirect_uri: redirect_uri, headers: { "Authorization" => basic_authorization })
token = client.auth_code.get_token(code, redirect_uri: redirect_uri)
# Later
token.refresh!
根據quatermain的要求,我將解決方案作為答案發布在這里:
https://docs.google.com/document/d/1SdGSfakQM3ZuiqJK7keXhOfh6310-z_h0THl1_Jswxk/pub
P / S:我在文檔中輸入錯誤,如下所示:
句子:“我認為此URL不影響身份驗證過程...”->應該是“我認為此URL不影響身份驗證過程...”
“准備就緒”->應該是“並通讀”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.