ruby-on-rails – Yahoo OAuth 1.0回调问题?
发布时间:2020-12-16 21:00:25 所属栏目:百科 来源:网络整理
导读:我想在我的网络应用程序中使用Yahoo Fantasy sport API,因为我使用OAuth进行Yahoo登录.我有消费者密钥和密钥,我成功传递了密钥,当我运行以下代码时.它重定向到Yahoo登录,它要求访问用户凭据的权限.如果我将AGREE页面重定向到 https://api.login.yahoo.com/oa
我想在我的网络应用程序中使用Yahoo Fantasy sport API,因为我使用OAuth进行Yahoo登录.我有消费者密钥和密钥,我成功传递了密钥,当我运行以下代码时.它重定向到Yahoo登录,它要求访问用户凭据的权限.如果我将AGREE页面重定向到
https://api.login.yahoo.com/oauth/v2/request_auth并显示验证码.如果我按下验证码页面中的关闭按钮,则不会回调到我的网址.
@ts=Time.now.to_i @callback_url = "http://localhost:3000/callback" @nonce = SecureRandom.hex() consumer = OAuth::Consumer.new("my consumerkey","secret key",{ :site => 'https://api.login.yahoo.com',:http_method => :post,:scheme => :header,:oauth_nonce => @nonce,:request_token_path => '/oauth/v2/get_request_token',:authorize_path => '/oauth/v2/request_auth',:access_token_path => '/oauth/v2/get_token',:oauth_callback => "http://localhost:3000/callback",:oauth_timestamp => Time.now.to_i,:oauth_signature_method => "HMAC-SHA-1",:oauth_version => "1.0",:oauth_callback_confirmed => true,}) request_token = consumer.get_request_token session[:request_token]=request_token redirect_to request_token.authorize_url access_token=request_token.get_access_token access = ActiveSupport::JSON.decode(access_token.to_json) if !(access.present?) @response = "Response failed" else @response = access end 你能否告诉我为获得access_token而进行的回调有哪些变化? 解决方法
我觉得你在回调时感到困惑.如下更改您的代码,您肯定会获得访问令牌以进行Yahoo API调用.
@@access_token = nil @@request_token = nil def get_request_token @@consumer = OAuth::Consumer.new('consumer key','secret key',{ :site => 'https://api.login.yahoo.com',:scheme => :query_string,:http_method => :get,:request_token_path => '/oauth/v2/get_request_token',:access_token_path => '/oauth/v2/get_token',:authorize_path => '/oauth/v2/request_auth' }) @@request_token = @@consumer.get_request_token( { :oauth_callback => 'http://localhost:3000/callback' } ) session[:request_token]=@@request_token redirect_to @@request_token.authorize_url #redirect_to @@request_token.authorize_url( { :oauth_callback => 'http://localhost:3000/success' } ) end def callback request_token = ActiveSupport::JSON.decode(@@request_token.to_json) if !(request_token.present?) $request_token_value = "Response failed" else $request_token_value = request_token end # access_token = @@request_token.get_access_token({:oauth_verifier=>params[:oauth_verifier],:oauth_token=>params[:oauth_token]}) @@access_token = @@request_token.get_access_token(:oauth_verifier=>params[:oauth_verifier]) access_json = ActiveSupport::JSON.decode(@@access_token.to_json) puts "****************************" puts $access_json puts "****************************" end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |