1

PHP Extensionを使用して OAuth プロバイダーを作成しました。これは私の開発環境では問題なく動作しますが、ステージング サーバーに移動した後もエラー メッセージが表示され続けます。

oauth_problem=signature_method_rejected

ステージング サーバー上でテスト スクリプトを使用して接続し、それ自体に接続し、開発サーバーはステージング サーバーに接続し、PHP OAuth 拡張機能とZend OAuth Consumerクラスの両方を使用して、これをテストしました。いずれの場合も、開発サーバーに接続すると機能しますが、ステージング サーバーに接続すると上記のエラーが発生します。

コードをたどると、OAuthProvider クラスがインスタンス化されるときにエラーが発生します。

$this->provider = new OAuthProvider();

$_SERVER['QUERY_STRING'] を確認すると、次のようになります。

oauth_consumer_key=6e449c12132115a9ba1cf1163c37f904&
oauth_nonce=e2ff158969b3e7213927e4a19de1b11f&
oauth_timestamp=1343990462&
oauth_signature_method=HMAC-SHA1&
oauth_version=1.0&
oauth_callback=redacted&
oauth_signature=y06YvCzVno8GSDib4%2BOeExDGWH0%3D

(読みやすくするために改行を入れています)

ご覧のとおり、署名方法は有効です (仕様に記載されている他の方法を試しましたが、ステージング サーバーでも開発サーバーでも機能しませんでした。

誰かが前にこのようなものに出くわしたことがありますか? さらに情報が必要な場合は、お知らせください。

4

2 に答える 2

1

htauth がブロックされているかどうかを確認できますか? また、アプリケーションは http 接続と https 接続の間を行き来しますか?

通信をブロックしている htauth が設定されていると思います。vhost を次のように修正することをお勧めします。

Order Deny,Allow deny from all AuthType Basic AuthName "Protected Area" AuthUserFile Require valid-user allow from your IP address

これを vhost 参照の public フォルダーに入れると、IP アドレスが htpasswd を使用せずに通信できるようになります。

ありがとう、

于 2012-08-09T13:26:04.233 に答える