2

magento api を使用して e コマース iOS アプリを開発しています。現在、oAuth 認証を使用してトークンを要求しようとしています。

ユーザーを認証するために、次のヘッダーとパラメーターを使用しています。

リクエスト URL = http://beta.localhost.com/oauth/initiate?oauth_callback= ' http://localhost/testapp '

OAuth realm="http://beta.localhost.com/", oauth_consumer_key="pr9vx4i46lc8jv8mmiu6z2w50p9an43x", oauth_nonce="8QSHUZFRWRC5VGN3", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1354356514", oauth_version="1.0", oauth_signature= "ucKs4DyFbKv6MJ1l2%2Fx4NvF819A%3D"

エラーが発生しています: oauth_problem=signature_invalid&debug_sbs=szeWMR2jNONabHyS3Ui7FIF3iPc=

Twitter認証と同じことをすべて試しましたが、同じ問題に苦しんでいます

また、これらのメソッドを高度なレストクライアントに含めようとしますが、別のエラーメッセージが表示されます

私のRest Client Responseページのスクリーンショット。

ここに画像の説明を入力 ここに画像の説明を入力

今後の手順のためにトークンを受け取ることで、この magento api を続行するのを手伝ってください。

4

2 に答える 2

2

問題は、OAuth 署名が間違っていることです。これは、Magento エラー応答によって明確に示されます。

署名プロセスのデバッグは、StackOverflow の質問を介して行うのは非常に難しいプロセスです。エラーを見つけて修正する最善の方法は、自分のコンピューターでローカルに実行することです。Magento が署名を構成する方法 (Zend_Oauth_Http_Utility::sign()メソッドを確認すると、Zend_Oauth_Signature_Hmacクラスに移動します) を確認し、そのプロセスを iOS 側のものと段階的に比較する必要があります。これは、違いを見つけるのに役立ちます。

ほとんどの場合、このような問題は次の 3 つの理由で発生します。

  1. 署名を取得するために処理されたデータ部分 (現在の場合は「oauth_*」パラメーター) の順序が間違っています。
  2. 自分で実装した場合の署名アルゴリズムの誤り
  3. バイナリ署名を文字列に変換して HTTP 経由で渡すために行われた間違ったエンコーディング

Magento と iOS のプロセスとその中間結果を比較すると、違いが始まる段階を見つけるのに役立ちます。したがって、何を修正する必要があるかを理解することができます。

于 2012-12-01T22:41:10.097 に答える