0

Drupal サービス モジュールをテストしていますが、問題なく動作しています。キーなしからキー認証に切り替えたところ、システムがこのキーを生成してくれましたafw92iej83foijofn23

を調べるnode.getと、4つの追加の必須パラメーターが必要でhttp://localhost/drupal/admin/build/services/browse/node.getあることがわかります。stringhashstringdomain_namestringdomain_time_stampstringnonce

引数 (6)

  • stringhash (必須)有効な API キー。
  • stringdomain_name (必須) API キーの有効なドメイン。
  • stringdomain_time_stamp (必須)キーのハッシュに使用されるタイム スタンプ。
  • stringnonce (必須)一度だけ使用する nonce は、ハッシュ キーも使用します。
  • intnid (必須) ノード ID。
  • arrayfields (オプション)返すフィールドのリスト

最初の引数は単なる API キーではなく、ハッシュされた API キーであり、他のフィールドと一緒にハッシュされているようです。この API キーを生成するにはどうすればよいですか? drupal がキーをハッシュすることを期待する順序または特定の方法はありますか?

4

1 に答える 1

1

必要なハッシュ値は、API キーでハッシュされた次のフィールドです。

Timestamp - UNIX タイムスタンプ形式の現在の時刻。

ドメイン - 上記のドメインに入力した値。

ノンス - ランダムな値。

メソッド - node.load など、呼び出したいサービス メソッド

例としていくつかの Drupal コード:

    $domain = 'my domain';
    $timestamp = (string) time();
    $nonce = user_password();
    $hash = hash_hmac('sha256', $timestamp .';'.$domain .';'. $nonce .';'.'user.get', 'remote_api_key');
    $xmlrpc_result = xmlrpc('http://remoteserver.com/services/xmlrpc', 'user.get', $hash, $domain, $timestamp, $nonce, 0);
    if ($xmlrpc_result === FALSE) {
      print '<pre>' . print_r(xmlrpc_error(), TRUE) . '<pre>';
    }
    else {
      print '<pre>' . print_r($xmlrpc_result, TRUE) . '<pre>';

}

この例はここからのものです http://drupal.org/node/394224

于 2010-09-21T11:49:39.130 に答える