首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >withings身份验证

withings身份验证
EN

Stack Overflow用户
提问于 2013-02-28 15:20:48
回答 2查看 947关注 0票数 2

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

问题是它没有返回,而是显示了一个404错误:页面未找到。我已经对回调url进行了多次交叉检查。

这是url

这是我尝试验证的代码:DocumentationGem1Gem2

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

代码语言:javascript
复制
@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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-05 04:04:04

井。我认为,您不应该使用第三方库,因为

代码语言:javascript
复制
@request_token.authorize_url(:oauth_callback => @callback_url)

返回错误的url。

尝试实现您自己的OAuth。

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

代码语言:javascript
复制
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发送请求:

代码语言:javascript
复制
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令牌和OAUTH密钥。

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2013-03-03 19:04:44

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15129751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档