2013-04-16 68 views
1

我正在嘗試使用PHP(不使用客戶端API)對PhotoBucket REST API進行第一步驗證。 開發者網站因爲他們升級服務而關閉,但他們提供給我一個SCID和一個私鑰,我認爲這是客戶密鑰和客戶機密。 我一直在尋找文檔和其他職位沒有運氣。 https://stackoverflow.com/questions/7890518/register-user-by-php-in-photobucket無法驗證PhotoBucket REST API

這裏就是我想出迄今:

//default parameters 
$url = "http://api.photobucket.com/login/request"; 
$parameters = array(
     'oauth_consumer_key' => rawurlencode('**key**'), 
     'oauth_nonce' => rawurlencode(md5(time())),//no md5, "Authentication failed nonce invalid" 
     'oauth_signature_method' => rawurlencode('HMAC-SHA1'), 
     'oauth_timestamp' => rawurlencode(time()), 
     'oauth_version' => rawurlencode('1.0'), 
     'format' => 'json' 
    ); 

//creation of base string and signature 
$basestring = rawurlencode("POST") . '&' . rawurlencode($url) . '&' . rawurlencode(http_build_query($parameters)); 

$sign = base64_encode(hash_hmac("sha1", $basestring, "**secret**" . "&", true)); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url . "?" . http_build_query($parameters) . '&oauth_signature=' . rawurlencode($sign)); 
$result = curl_exec($ch); 

如果我添加的參數POSTFIELDS我得到: 401,異常驗證失敗時間戳無效-1366125875 7 XML POST 1366125875

如果我添加參數,如示例(url +?+參數+ &簽名=簽名我得到: 401,異常驗證失敗簽名檢查失敗7 xml POST 1366125970

參考文獻: http://pic.photobucket.com/dev_help/WebHelpPublic/Content/Getting%20Started/Consumer%20Authentication.htm

http://feed7.com/ad-202021/Photobucket-Developer-Forum-Code-Examples-and-Libraries

回答

1

我張貼了這個問題作爲最後的手段。但是,我無法想到我終於明白了。

1)的MD5()添加到時間()方法來克服 「驗證失敗的隨機數無效」

2)正確地簽署該基底線(使用$ raw_output =真) $符號= BASE64_ENCODE( hash_hmac(「sha1」,$ basestring,secret。「&」,true));使用rawurlencode而不是進行urlencode(尖從feed7.com用戶)

4)發送在後URL一切(無後的數據(postfields)的一些文檔頁面狀態),以克服

3)「驗證失敗時間戳無效「

5)最後,這是這篇文章的主要原因:不要將格式參數添加到參數列表的末尾。要麼刪除它,或將其添加到參數列表的beggining克服 「驗證失敗簽名檢查失敗」

這是因爲的photobucket強制他們所謂的「按名稱排序lexographically參數」,這意味着參數需嚴格按字母順序排列

+0

我一直收到錯誤無效的方法100 – PinoyStackOverflower