Проблема с обратным вызовом Yahoo OAuth 1.0?

Я хочу использовать Yahoo Fantasy sport API в своем веб-приложении. Для этого я использую OAuth для входа в Yahoo. У меня есть потребительский ключ и секретный ключ, и я успешно передал ключи, когда запускаю следующий код. Он перенаправляет на вход в Yahoo, он запрашивает разрешение на доступ к учетным данным пользователя. Если я даю согласие, страница перенаправляется на https://api.login.yahoo.com/oauth/v2/request_auth и показывает проверочный код. Если я нажму кнопку закрытия на странице кода подтверждения, это не будет обратным вызовом на мой URL-адрес.

 @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

Подскажите, пожалуйста, какие изменения нужно внести, чтобы получить callback для получения access_token.


person Prabhu    schedule 08.01.2014    source источник


Ответы (1)


Я думаю, вы запутались, получая обратный вызов. измените свой код следующим образом. Вы обязательно получите токен доступа для вызова 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
person Manikanda Prabhu    schedule 10.01.2014
comment
Спасибо за ваш ответ, я попробую, как вы упомянули. - person Prabhu; 10.01.2014