0

Drupal 6 のサービス モジュールを使用して、JSON 形式のカスタム ビューからデータを取得する方法を調査しています。http://drupal.org/node/308629の記事に従って、このプロジェクトの vb バージョンを作成しました ( https://sharpred@github.com/sharpred/ConsoleApplicationDrupal.gitにプッシュされます) 。

コードを初めて実行すると「無効な API キー」が表示され、その後の実行では「トークンは以前にリクエストに使用されました。別の nonce キーで再試行してください」が返されます。2 番目のエラーは、私のコードが実行されるたびに新しいランダムナンスを作成するため、少し偽の IMO です。

また、最初の実行で services_timestamp_nonce テーブルにタイムスタンプのみを含むエントリが作成され、nonce またはドメイン値が含まれていないことにも気付きました。このレコードを削除すると、「無効な API キー」メッセージに戻ります。

コードは認証なしで機能し、サイトの /admin/build/services/browse/views.get からのメソッド呼び出しも機能します。

なぜこれが機能しないのかについてのアイデアはありますか?

Google で検索すると、「無効な API キー」の最も一般的な原因は、使用するタイムスタンプが間違っているか、API キーがハッシュの作成に使用されたドメインと一致しないようです。私が見る限り、私の場合はどちらも当てはまりません。https://gist.github.com/1151222でタイムスタンプとハッシュを作成するために使用するコードの要点を作成しました

このプロセスを機能させるのを手伝ってくれる人はいますか?

4

1 に答える 1

0

サービスモジュールのコードを調べた後、これを理解しました。マルチパート フォームの値の一部が引用符で囲まれていないため、services_key_auth モジュールによって null として処理されていました。これは、最初のパスでは、タイムスタンプのみが nonce テーブルに書き込まれ、計算されたハッシュが引用符のためにハッシュと一致しなかったことを意味します。その後の更新で、モジュールは効果的に null の nonce 値を検索し、データベースで nonce 値を見つけると、以前に使用された結果を返しました。他の誰かがこの問題を抱えている場合は、上記にリンクされている私の github プロジェクトをプルして、私のコードを見てください。

于 2011-08-18T08:17:37.910 に答える