我使用 pecl oauth 包编写了一个简单的 oauth 提供者和消费者。一切顺利,直到我尝试获取访问令牌,此时我收到签名不匹配错误。oauth 消费者尝试通过以下方式使用 oauth->getauthorizedtoken 联系提供者:
$res = mysql_query("SELECT * FROM request_tokens WHERE oauth_token = '".mysql_real_escape_string($token)."'");
$requestToken = mysql_fetch_assoc($res);
$oauth->setToken($token, $requestToken['oauth_token_secret']);
$authToken = $oauth->getAccessToken("http://dev.myserver.com/~testbranch/?m=oauthMod&act=authorize", NULL, $verifier);
当这失败时,它会吐出带有如下签名的调试信息:
3qBMmue4Q+j8Dm4/9VSTl6y0TR8=
在提供者方面,消费者和令牌经过验证,然后它因签名不匹配而失败,即使它计算的签名是:
3qBMmue4Q%2Bj8Dm4%2F9VSTl6y0TR8%3D
这显然是完全相同签名的 url 转义版本。这是一个错误还是我公然遗漏了什么?