Я пытаюсь учиться и играть с реализацией PHP OAuth, как определено here. Я не использую какую-либо библиотеку, просто чистую реализацию OAuth, поскольку я пытаюсь ее изучить. Однако, как я обычно пытаюсь это сделать, я не могу заставить подписи соответствовать.PHP OAuth Signature Mismatch
На стороне потребителя у меня есть:
<?php
$consumer_key = '1234';
$consumer_secret = '1234';
$url = 'http://localhost/oauth/provider/request';
try {
$oauth = new OAuth($consumer_key, $consumer_secret);
$signature = $oauth->generateSignature('POST', $url);
$request_token = $oauth->getRequestToken($url);
var_dump($signature);
print_r($request_token);
} catch (OAuthException $E) {
var_dump($E);
}
На стороне провайдера у меня есть:
<?php
function call(){
return OAUTH_OK;
}
$OAuthProvider = NULL;
try{
$OAuthProvider = new OAuthProvider();
$OAuthProvider->consumerHandler('call');
$OAuthProvider->timestampNonceHandler('call');
$OAuthProvider->tokenHandler('call');
$OAuthProvider->isRequestTokenEndpoint(true);
$OAuthProvider->checkOAuthRequest();
}
catch(Exception $ex){
echo $OAuthProvider->signature;
}
Довольно простое право? Тогда сообщение об ошибке из пойманного исключения, которое я получаю, это «Signatures_do_not_match». Я проверил, и действительно, подписи не совпадают. Вот пример выхода:
Consumer: 8cePFQFqJbL3hY6OjZe6kw63irc=
Provider: 2SPGA0GcC7GLLR1Jte53xz_bWOY
Любые идеи?