2013-04-16 2 views
1

Я пытаюсь выполнить аутентификацию первого шага в API REST PhotoBucket с помощью PHP (без использования 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, Exception Ошибка аутентификации метки недопустимый -1366125875 7 XML POST 1366125875

Если я добавлю такие параметры, как в примере (url +? + Parameters + & signature = signature Я получаю: 401, Ошибка проверки подлинности с ошибкой Exception Authentication 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));

3) с использованием rawurlencode, а не UrlEncode (наконечник от feed7.com пользователя)

4) отправить все в пост URL (не почтовые данные (postfields) в некоторой документации страницы состояния), чтобы преодолеть «Ошибка аутентификации timestamp invalid "

5) наконец, и это было основной причиной этого сообщения: не добавляйте параметр формата в конец списка параметров. либо удалите его, либо добавьте его в начало списка параметров для преодоления «Ошибка проверки подлинности с проверкой подлинности»

Это связано с тем, что Photobucket применяет то, что они называют «Сортировка параметров по имени lexographically», что означает, что параметры должны быть строго упорядочен в алфавитном порядке

+0

Я продолжаю получать ошибочный метод ошибки 100 – PinoyStackOverflower

Смежные вопросы