0
我有一個OAuth實現與Fitbit合作從fitbit的服務中提取數據。然而,他們最近更新了他們的服務,現在只要我嘗試獲取訪問令牌,請求就會失敗。使用PHP Pecl - Custom Signature(Fitbit)實現OAuth 1.0a
他們已經發表聲明如下有關新規定:
The solution is to OAuth sign the requests to <https://api.fitbit.com/oauth/request_token> and <https://api.fitbit.com/oauth/access_token> in a similar manner that all other calls to the Fitbit API are signed.
Requests to <https://api.fitbit.com/oauth/request_token> need to be signed with your application's consumer key and secret.
Requests to <https://api.fitbit.com/oauth/access_token> need to be signed with your application's consumer key and secret and the oauth_token and oauth_verifier received from the authorization callback.
我使用PHP PECL的OAuth庫的OAuth請求。不過,我找不到添加額外參數到簽名的方法。我想下面的,但我不知道這是更新的OAuth簽名的正確方法:
$params['consumer_key'] = $this->consumer_key;
$params['consumer_secret'] = $this->consumer_secret;
$params['oauth_token'] = $this->oauth_token;
$params['oauth_verifier'] = $_REQUEST['oauth_verifier'];
$this->signature = $this->oauth->generateSignature('GET', $this->access_url, $params);
$this->access_token = $this->oauth->getAccessToken($this->access_url, $this->signature, $_REQUEST['oauth_verifier']);
的OAuth的錯誤我得到的是:
401
Invalid auth/bad request (got a 401, expected HTTP/1.1 20X or a redirect)
oauthoauth_signatureInvalid signature: FfvYDv5MSOfwcOwLZBJa0TlKS4Q=false
這是從存儲簽名上面的代碼示出了適當的簽名應該是:
[signature] => wlfzqPs4aEkTkHfqyaO65D/RW6o=
這是「接頭已發送」片的調試信息:
[headers_sent] => Authorization: OAuth oauth_session_handle="Frdnxw8oHe3BgNVi0Fy4jBXrZko%3D",
oauth_verifier="ss6nmke8elf3so66jg3auued49",
oauth_consumer_key="(my key)",
oauth_signature_method="HMAC-SHA1",
oauth_nonce="30463910852ea5cc2d04e60.71895372",
oauth_timestamp="1391090882",
oauth_version="1.0",
oauth_token="2cabd6beab341e332bdf8e522b6019ef",
oauth_signature="hULwWcQOl%2F8aYjh0YjR843iVXtA%3D"
我無法在文檔中找到任何說明如何設置OAuth的簽名以便與其請求一起使用的文檔。任何幫助將不勝感激!!!
如果您需要更多信息,請讓我知道!