2010-07-10 36 views
0

我正在測試Drupal服務模塊,它工作正常。我現在從無鑰匙切換到鑰匙認證,並且系統爲我生成這個鑰匙afw92iej83foijofn23在Drupal服務模塊中使用密鑰

當我在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也使用散列鍵。
  • intnid(必填)節點ID。
  • arrayfields(可選)字段列表返回

看來第一個參數不只是API密鑰,但散列API密鑰,與其他領域的散列。我如何生成此API密鑰?有沒有一個命令或一個特定的方式,Drupal期望我散列密鑰?

回答

1

所需的散列值與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