好吧。我認爲,你不應該使用第三方庫,因爲
@request_token.authorize_url(:oauth_callback => @callback_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個部分: {方法} + 「&」 + {編碼的請求URL} + 「&」 + {編碼的請求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
WITHINGS_KEY和WITHINGS_SECRET是消費者鍵和消費者的祕密。 Withings沒有給出任何oauth_signature,它給了ony消費者的鑰匙和祕密 – 2013-03-04 07:15:59
是的。但請看文檔中的示例請求。請求必須包含下一字段: oauth_callback(編碼重定向URL), oauth_consumer_key(WITHINGS_KEY), oauth_nonce(隨機字符串), oauth_signature(要求籤名與消費者的祕密), oauth_signature_method(簽名方法(HMAC-SHA1)), oauth_timestamp(當前時間), oauth_token(從https://oauth.withings.com/account/request_token收到的請求令牌), oauth_version(1.0)。 – Aries 2013-03-04 19:26:45
是爲了獲得響應而需要成爲現場的call_back?我得到一個錯誤500,並想知道我現在是否需要一個活網站。 – Erik 2014-07-08 18:17:25