withings api身份validation

我正在尝试使用withings api进行身份validation。 我已经正确获得了消费者密钥和密码,并且能够访问应用页面,我还可以使用api进行身份validation。

问题是它没有回来,而是显示404错误:找不到页面。 我多次交叉检查回调url。

这是url 。

这是我试图validation的代码: Documentation , Gem1 , Gem2 。

我想让用户回到我的应用程序。

@callback_url = 'http://127.0.0.1:3000/auth/withings/callback' @consumer = OAuth::Consumer.new(WITHINGS_KEY, WITHINGS_SECRET, { :site => 'https://oauth.withings.com', :request_token_path => '/account/request_token', :access_token_path => '/account/access_token', :authorize_path => '/account/authorize' }) @request_token = @consumer.get_request_token(:oauth_callback => @callback_url) session[:request_token] = @request_token redirect_to @request_token.authorize_url(:oauth_callback => @callback_url) 

好。 我认为,你不应该使用第三方库,因为

 @request_token.authorize_url(:oauth_callback => @callback_url) 

返回错误的url。

尝试自己实施OAuth。

1)对字符串使用HMAC-SHA1算法:

 GET&https%3A%2F%2Foauth.withings.com%2Faccount%2Frequest_token&oauth_callback%3Dhttp%3A%2F%2F127.0.0.1%3A3000%2Fauth%2Fwithings%2Fcallback%26oauth_consumer_key%3D{WITHINGS KEY}%26oauth_nonce%3D{RANDOM STRING}%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D{CURRENT TIME}%26oauth_version%3D1.0 

此字符串包含3个部分:{METHOD} +“&”+ {ENCODED REQUEST URL} +“&”+ {ENCODED REQUEST QUERY PART}

签名密码:{WITHINGS SECRET} +“&”

在结果中编码此符号。

2)向URL发送请求:

 https://oauth.withings.com/account/request_token?oauth_callback=http%3A%2F%2F127.0.0.1%3A3000%2Fauth%2Fwithings%2Fcallback&oauth_consumer_key={WITHINGS KEY}&oauth_nonce={NONCE FROM STEP 1}&oauth_signature={RESULT OF STEP 1}&oauth_signature_method=HMAC-SHA1&oauth_timestamp={TIMESTAMP FROM STEP 1}&oauth_version=1.0 

3)解析反应体。 获取OAUTH TOKEN和OAUTH SECRET。

4)对字符串使用HMAC-SHA1算法:

 GET&https%3A%2F%2Foauth.withings.com%2Faccount%2Fauthorize&oauth_callback%3Dhttp%3A%2F%2F127.0.0.1%3A3000%2Fauth%2Fwithings%2Fcallback%26oauth_consumer_key%3D{SECRET KEY}%26oauth_nonce%3D{RANDOM STRING}%26oauth_signature_method%3DHMAC-SHA1%26oauth_token%3D{OAUTH TOKEN}%26oauth_timestamp%3D{CURRENT TIME}%26oauth_version%3D1.0 

秘密签名密钥:{WITHINGS SECRET} +“&”+ {OAUTH SECRET}

在结果中编码此符号。

5)将用户重定向到URL:

 https://oauth.withings.com/account/rauthorize?oauth_callback=http%3A%2F%2F127.0.0.1%3A3000%2Fauth%2Fwithings%2Fcallback&oauth_consumer_key={WITHINGS KEY}&oauth_nonce={NONCE FROM STEP 4}&oauth_signature={RESULT OF STEP 4}&oauth_signature_method=HMAC-SHA1&oauth_token={OAUTH TOKEN}&oauth_timestamp={TIMESTAMP FROM STEP 4}&oauth_version=1.0 

示例链接中缺少oauth_consumer_key,oauth_signature和其他oauth字段。