2013-10-14 2 views
0

всеОшибки подписи из Withings Rest API

У меня есть приложение, которое успешно получает разрешение с использованием api и OAuth от Withing.

Я получаю страницу авторизации от whitings, и я получаю полученный токен и верификатор, однако я не могу делать запросы с ними - я продолжаю получать ошибку 342: подпись (с использованием Oauth) недействительна.

Код:

<? 
require("include.php"); 
require_once("OAuth.php"); 


$domain = "oauth.withings.com"; 
$base = "/account/"; 
$base_url = "https://$domain$base"; 

$hmac_method = new OAuthSignatureMethod_HMAC_SHA1(); 
$consumer = new OAuthConsumer("my key goes here :-)", "my key goes here :-)", "http://oauth.corp.withings.com/test.php"); 

$sig_method = $hmac_method; 

$username="mydbusername"; 

$mySQL=" select * from `healthtokens` where service='WITHINGS' and userid='".$username."'"; 
$data=mysql_query($mySQL) or die("Died at 2<BR>".mysql_error()); 

$tokenrow = mysql_fetch_array($data); 

$serviceuserid=$tokenrow['serviceuserid']; 
$otoken=$tokenrow['otoken']; 
$overifier=$tokenrow['overifier']; 

$acc_tok = new OAuthToken($otoken,$overifier); 



$req = OAuthRequest::from_consumer_and_token($consumer, $acc_tok, "GET", "http://wbsapi.withings.net/user?action=getbyuserid&userid=".$serviceuserid); 
$req->sign_request($sig_method, $consumer, $acc_tok); 


$response = file_get_contents($req); 


echo $response; 


?> 

Withings API Docs: http://www.withings.com/en/api

Пример моего звонка:

http://wbsapi.withings.net/user?action=getbyuserid&oauth_consumer_key=mybigconsumerkeyishere&oauth_nonce=f57a956d52c7412326fb0577e87addc4&oauth_signature=jiBNvql5r06HysjjVyxCh7C7ZUk%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1381758029&oauth_token=4088d6173b78b71cfd6ddd4245496de4b1f7b3c45bfb49f8e59b1202ccfc&oauth_version=1.0&userid=1234567

ответ

2

Я знаю, это звучит глупо, и это дало мне некоторые головные боли тоже, но «смешная» вещь с oauth 1 (или, по крайней мере, с выводами) заключается в том, что порядок параметров важен.

Попробуйте использовать точный порядок, как в образце Withings OAuth (http://www.withings.com/en/api/oauthguide):

http://wbsapi.withings.net/measure? 
action=getmeas 
&oauth_consumer_key=c331c571585e7c518c78656f41582e96fc1c2b926cf77648223dd76424b52b 
&oauth_nonce=accbac1b7ee2b86b828e6dc4a5a539b2 
&oauth_signature=XfobZMboIg2cRyNKAvyzONHHnKM%3D 
&oauth_signature_method=HMAC-SHA1 
&oauth_timestamp=1311842514 
&oauth_token=887557411788d5120537c6550fbf2df68921f8dd6f8c7e7f9b441941eb10 
&oauth_version=1.0 
&userid=831 
Смежные вопросы