Я работаю над добавлением OAuth в RESTful API.Удивительно, но с использованием PHP OAuth и OAuthProvider классов (из pecl / oauth) у меня не было проблем с подписями и т. Д.
Где я сталкиваюсь с проблемами, этов том, что происходит, когда возникают ошибки, такие как неверная метка времени.Я настраиваю своего провайдера следующим образом:
public function authenticate(){
try {
$provider = new OAuthProvider();
$provider->consumerHandler(array($this,'handleConsumer'));
$provider->timestampNonceHandler(array($this,'handleTimestampNonce'));
$provider->tokenHandler(array($this,'handleToken'));
$provider->isRequestTokenEndpoint(FALSE);
$provider->checkOAuthRequest();
} catch (Exception $e) {
// Do nothing.
}
}
Когда все функции обработчика возвращают OAUTH_OK
, запрос может продолжаться, как ожидалось.Чтобы увидеть, что происходит, когда временная метка неверна, я написал свой timestampNonceHandler следующим образом:
public function handleTimestampNonce($provider){
return OAUTH_BAD_TIMESTAMP;
}
Когда я запускаю это, пропуская правильно подписанный запрос (да, я уверен), ответHTTP 500.
[headers_recv] => HTTP/1.1 500 Internal Server Error
Date: Wed, 14 Sep 2011 08:47:59 GMT
Server: Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8r DAV/2 PHP/5.3.4
X-Powered-By: PHP/5.3.4
Content-Length: 648
Connection: close
Content-Type: 0
[body_recv] => Invalid nonce/timestamp combination
Сообщение верное, но, несомненно, это должно быть HTTP 401.
Я что-то здесь не так делаю или OAuthProvider
просто рассматривать любую ошибку как внутреннюю ошибку сервера?
Заранее спасибо за помощь.