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

理由は聞かないでください。ただし、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!
于 2014-09-11T22:57:19.003 に答える