簡體   English   中英

帶有Ruby on Rails和OAUTH2的Yahoo API

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM