2

我有一个从证券交易所获取数据的 RoR 网站,我正在通过 Yahoo API 使用 Yahoo 的财务表。我需要授权才能获得对 YQL 的完全访问权限,这需要我使用 Oauth2。我需要帮助以获取对 Yahoo 的 OAuth 访问权限。

这是我尝试过的:

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,但不清楚“代码”是什么。我受到这个问题的启发。

4

2 回答 2

4

不要问我为什么,但是雅虎很难找到他们的 OAuth 2.0 文档。不过我找到了

refresh_token此外,您无需明确询问用户“离线”权限即可获得非常“棒”的功能。在我看来,这对雅虎来说是一个安全问题。谷歌和微软都需要明确的“离线”访问。

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!
于 2014-09-11T22:57:19.003 回答
0

根据quatermain的要求,我在这里发布我的解决方案作为答案:

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

P/S:我在文档中打错了一些字,如下:

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

  • 单词“并且准备通过”->应该是“并且通读”

于 2013-11-14T03:39:14.243 回答