我正在尝试使用 guzzle 和 restful web 服务在 drupal 商务中创建产品。
当我尝试创建新产品时,我使用以下过程:1)以有权创建产品的用户身份登录(成功)2)请求 CSRF 令牌(成功)3)创建产品:哦!:客户错误响应 [状态代码] 401 [原因短语] 未授权:未授予对此操作的访问权限
现在,当我通过海报(Firfox 附加组件)执行此过程时。我可以成功地创建一个产品,但是我总是无法访问这个操作。
require 'guzzle.phar';
use Guzzle\Http\Client;
//EDIT:
use Guzzle\Plugin\Cookie\CookiePlugin;
use Guzzle\Plugin\Cookie\CookieJar\ArrayCookieJar;
$client = new Client('http://localhost:8888/drupal-test/');
//EDIT:
$cookiePlugin = new CookiePlugin(new FileCookieJar($cookie_file_name));
$client->addSubscriber($cookiePlugin);
//User login
$request = $client->post('my_services/user/login.json', null,
array(
'username' => 'its',
'password' => '****'
));
$response_json = $response->getBody();
$session = $response_var->session_name . '=' . $response_var->sessid;
//Services CSRF token
$request = $client->get('services/session/token');
$response = $request->send();
$token = $response->getBody(TRUE);
//Create Product
$request = $client->post('my_services/product.json',
array(
'X-CSRF-Token' => $token,
),
array(
'sku' => 'guzzleproductadd10',
'title' => 'guzzleproductadd10',
'type' => 'product',
'commerce_price_amount' => '200',
'commerce_price_currency_code' => 'EUR'
)
);
//$request->addHeader('X-CSRF-Token', $token);
try {
$response = $request->send();
}
catch (Guzzle\Http\Exception\BadResponseException $e) {
echo 'Uh oh!: ' . $e->getMessage();
}
我真的不明白我做错了什么。我登录,将所需的变量添加到标题中。
泰!
编辑:解决方案见评论。我调整了代码。