我正在尝试使用guzzle和restful webservices在drupal commerce中创建一个产品。
当我尝试创建新产品时,我使用以下过程: 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();
}
我真的不明白我做错了什么。我登录后,将所需的变量添加到标题中。
泰!
编辑:解决方案请参阅评论。我调整了代码。