在 Drupal 服务模块中使用密钥

发布于 2024-09-08 22:07:50 字数 813 浏览 7 评论 0原文

我正在测试 Drupal 服务模块,它工作正常。我现在从无密钥身份验证切换到密钥身份验证,系统为我生成了此密钥 afw92iej83foijofn23

当我在 http://localhost/drupal/admin/build/services/browse/node.get 检查 node.get 时,我发现它现在需要 4 个额外的必需参数stringhashstringdomain_namestringdomain_time_stampstringnonce

参数 (6)

  • stringhash(必需) 有效的 API 密钥。
  • stringdomain_name(必需) API 密钥的有效域。
  • stringdomain_time_stamp(必需) 用于散列密钥的时间戳。
  • stringnonce (必填) 一次使用nonce也使用了hash key。
  • intnid(必需)节点 ID。
  • arrayfields(可选) 要返回的字段列表

似乎第一个参数不仅仅是 API 密钥,而是与其他字段一起进行哈希处理的哈希 API 密钥。如何生成此 API 密钥? drupal 是否有一个顺序或特定方式希望我散列密钥?

I'm testing the Drupal services module and it's working fine. I now switched from no key to a key authentication, and the system generated this key for me afw92iej83foijofn23.

When I inspect node.get at http://localhost/drupal/admin/build/services/browse/node.get I see that it now needs 4 extra required parameters stringhash, stringdomain_name, stringdomain_time_stamp, stringnonce.

Arguments (6)

  • stringhash (required) A valid API key.
  • stringdomain_name (required) A valid domain for the API key.
  • stringdomain_time_stamp (required) Time stamp used to hash key.
  • stringnonce (required) One time use nonce also used hash key.
  • intnid (required) A node ID.
  • arrayfields (optional) A list of fields to return

It seems the first argument isn't just the API key but a hashed API key, hashed with the other fields. How do I generate this API key? Is there an order or a specific way that drupal expects me to hash the key?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

樱娆 2024-09-15 22:07:50

所需的哈希值是使用 API 密钥进行哈希处理的以下字段:

时间戳 - unix 时间戳格式的当前时间。

域 - 您为上面的域输入的值。

Nonce - 随机值。

方法 - 您要调用的服务方法,例如 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

The hash value required is the following fields hashed with the API Key:

Timestamp - Current time in unix timestamp format.

Domain - The value you entered for domain above.

Nonce - A random value.

Method - The services method you want to call e.g. node.load

Some Drupal code as an example:

    $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>';

}

This example is from here
http://drupal.org/node/394224

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文