私はOAuthをRESTfulなAPIに追加しようとしています。驚くべきことに、(PECL/OAuthのから)PHPのOAuthとOAuthProviderクラスを使用して、私はPHP OAuthProviderがHTTP 500を返す
私は問題が発生していますような悪いタイムスタンプなどのエラーが発生したときに何が起こるかであるなどの署名に問題を持っていたていませんでした。
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
メッセージは正しいですが、確かにこのshouldはHTTPも401
は、私がここで間違って何かをやっている、またはOAuthProvider
だけで内部サーバーエラーなどの任意の障害を扱うのですか?
ご協力いただきありがとうございます。
ありがとうaitchnyu。あなたは絶対に正しいです。私はドキュメントでSHOULDも見ましたが、OAuthProviderの実装が手紙にかなり近いと期待/期待していました。あなたの答えを受け入れる前に500人の回答がどこから来たのかについて誰かが考えているかどうかを知りたいです。 –
"私は自分自身が好奇心を抱いています:-)私はちょうど大学を去り、OAuthプロバイダを自分自身で論じるという仕事を与えられています。 – aitchnyu