使用Ruby on Rails和OAUTH2的Yahoo API

时间:2012-12-04 14:24:32

标签: ruby-on-rails oauth-2.0 yahoo-api

我有一个从证券交易所获取数据的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返回给我,但目前还不清楚“代码”是什么。我受到Question的启发。

2 个答案:

答案 0 :(得分:4)

不要问我为什么,但雅虎很难找到他们的OAuth 2.0文档。 I found it, though

此外,漂亮"真棒"你得到一个refresh_token而不需要明确地要求用户"离线"权限。在我看来,这是雅虎的安全问题。谷歌和微软都需要明确的#34;离线"访问。

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!

答案 1 :(得分:0)

根据quatermain的要求,我在此处发布我的解决方案:

https://docs.google.com/document/d/1SdGSfakQM3ZuiqJK7keXhOfh6310-z_h0THl1_Jswxk/pub

P / S:我在文档中做了一些错误,如下所示:

  • 句子:“我这不会影响身份验证过程......” - >应该是“我不认为这个URL会影响身份验证过程......”

  • 单词“and ready through” - >应该是“并通读”