【发布时间】:2011-04-05 14:37:31
【问题描述】:
我是 Magento Web 服务的新手,必须扩展它。 Webservice shell 能够登录客户,将会话 cookie 还给我,以便我可以重定向到再次设置 cookie 的文件,重定向我,然后我可以看到我的购物车并继续在 Magento 商店结帐。
问题: Magento 创建一个 cookie(包含会话 id 或其他内容,我尝试设置此 cookie 手册并且他们即时登录)而不是在客户登录时设置会话。 我已经尝试了几个小时来获取这个由 magento 在我的 magento 网络服务中设置的 cookie。我打电话时似乎没有设置cookie
$session = Mage::getSingleton('customer/session');
return $session->getCookie()->get('frontend');
这是我的完整代码: Magento Webservice API:
<?php
class Customapi_Model_Core_Api
{
public function __construct()
{
}
public function checkout($user, $cart)
{
$ret['cookie'] = $this->login($user);
//$coreCookie = Mage::getSingleton('core/cookie');
//$ret['cookie'] = $_COOKIE['frontend'];
return $ret;
}
function login($user)
{
Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton('customer/session');
try
{
$session->loginById($user['id']);
}
catch (Exception $e)
{
}
return $session->getCookie()->get('frontend');
}
}
?>
这是我在 PHP 中的 Api 调用:
<?php
$teambook_path = 'http://localhost/magento/';
$soap = new SoapClient('http://localhost/magento/api/?wsdl');
$soap->startSession();
$sessionId = $soap->login('ApiUser', 'ApiKey');
$userSession = $soap->call(
$sessionId,
'customapi.checkout',
array(
array(
'id' => 1,
'username' => 'Ruf_Michael@gmx.de',
'password' => '***'
),
array(
)
)
);
echo '<pre>';
var_dump($userSession)."\n";
if(isset($userSession['sid']))
echo '<a href="'.$teambook_path.'session.php?sid='.$userSession['sid'].'" target="_blank">'.$userSession['sid'].'</a>'."\n";
echo '</pre>';
$soap->endSession($sessionId);
?>
感谢您的每一个帮助! MRu
对不起,我正在写一个答案,但评论框拒绝我写超过...信。
我已经尝试了您发布的两个代码,但我得到的只是一个空数组或 Bool false。 我写了一个静态函数:
private static $cookie = array();
public static function cookie($key, $value)
{
if($key == 'frontend') {
self::$cookie['key'] = $key;
self::$cookie['value'] = $value;
}
}
在 Mage_Core_Model_Session_Abstract_Varien::start 中调用,我得到了前端 cookie 值:
Customapi_Model_Core_Api::cookie($sessionName, $this->getSessionId());
在第 125 行。
但这并没有解决我的基本问题: 在 Api 调用中创建的 Session 无法恢复,尽管它已设置为正确的值。
感谢您的帮助!
【问题讨论】:
-
你好@MRu,我是magento的新手,有同样的任务,请你指导我如何逐步为magento中的客户登录创建Web服务?