繁体   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