我正在尝试使用withings进行身份验证。我已经正确地获得了消费者密钥和密钥,并且能够访问应用程序页面,并且我还可以使用api进行身份验证。
问题是它没有返回,而是显示了一个404错误:页面未找到。我已经对回调url进行了多次交叉检查。
这是url。
这是我尝试验证的代码: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)发布于 2013-03-05 04:04:04
井。我认为,您不应该使用第三方库,因为
@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} + "&“+{编码请求URL} + "&”+{编码请求查询部分}
签名密钥:{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.03)解析响应体。获取OAUTH令牌和OAUTH密钥。
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发布于 2013-03-03 19:04:44
示例链接中缺少oauth_consumer_key、oauth_signature和其他oauth字段。
https://stackoverflow.com/questions/15129751
复制相似问题