2014-05-09 3 views
1

나는 OAuth Ruby gem을 사용하여 Withings API에서 활동 데이터를 가져 오려고 노력했습니다. 어떤 메소드를 사용 하던지간에, 나는 문서에서 예제 URI를 복사했지만 물론 사용자 ID를 스왑 했음에도 일관되게 503 오류 응답 (충분한 params가 아님)을 되 돌린다. 과거에는 아무도 이걸 가지고 행운이 없었나요? 내가하고있는 바보 일 뿐이라고 기대한다.Withings With API ruby ​​

class Withings 
    API_KEY = 'REMOVED' 
    API_SECRET = 'REMOVED' 
    CONFIGURATION = { site: 'https://oauth.withings.com', request_token_path: '/account/request_token', 
         access_token_path: '/account/access_token', authorize_path: '/account/authorize' } 

    before do 
    @consumer = OAuth::Consumer.new API_KEY, API_SECRET, CONFIGURATION 
    @base_url ||= "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}#{request.env['SCRIPT_NAME']}" 
    end 

    get '/' do 
    @request_token = @consumer.get_request_token oauth_callback: "#{@base_url}/access_token" 
    session[:token] = @request_token.token 
    session[:secret] = @request_token.secret 

    redirect @request_token.authorize_url 
    end 

    get '/access_token' do 
    @request_token = OAuth::RequestToken.new @consumer, session[:token], session[:secret] 

    @access_token = @request_token.get_access_token oauth_verifier: params[:oauth_verifier] 
    session[:token] = @access_token.token 
    session[:secret] = @access_token.secret 
    session[:userid] = params[:userid] 

    redirect "#{@base_url}/activity" 
    end 

    get '/activity' do 
    @access_token = OAuth::AccessToken.new @consumer, session[:token], session[:secret] 
    response = @access_token.get("http://wbsapi.withings.net/v2/measure?action=getactivity&userid=#{session[:userid]}&startdateymd=2014-01-01&enddateymd=2014-05-09") 
    JSON.parse(response.body) 
    end 
end 

다른 API 엔드 포인트의 경우 오류 응답이 247입니다. 제공된 사용자 ID가 없거나 잘못되었습니다. 이것은 정말 실망 스럽습니다. 감사합니다

답변

1

그래서 나는 Withing API와 OAuth 라이브러리에 대해 더 잘 이해하고 있습니다. 기본적으로 Withings는 쿼리 문자열을 사용하여 API 매개 변수를 전달합니다. 이건 내 OAuth를 소비자에 추가됩니다 그래서

http_method: :get, scheme: :query_string 

처럼, 그래도 난 내가 API 호출을 할 때 제대로 이러한 매개 변수를 전달 대해 가고 있었다,하지만 분명히 내가 명시 적으로 쿼리 문자열 방식을 사용하도록 OAuth는 라이브러리를 설정하는 데 필요한 구성 및 모든 즉시 작동합니다.