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エスケープバージョンです。これはバグですか、それとも露骨に何かが足りないのですか?