我想鏈接與magento的Web應用程序,以便當用戶登錄到Web應用程序時,他/她也會自動登錄到magento。magento登錄從外部網站,跨域
爲了簡單起見,我用一個簡單的登錄表單對它進行了測試。所以現在我安裝了magento,一個自定義API編寫的自定義模塊和一個調用登錄API嘗試驗證用戶的PHP表單。
的API型號代碼片段:在PHP形式
class Modulename_Model_Api extends Mage_Api_Model_Resource_Abstract
{
function login($email, $password)
{
Mage::app()->setCurrentStore("default");
Mage::getSingleton('core/session');
$session = Mage::getSingleton('customer/session');
if($session->login($email, $password)) {
return $session->getSessionId();
} else {
$this->_fault('login_fail');
return false;
}
}
}
代碼片段:
<?php
if (isset($_POST['email']) && isset($_POST['password'])) {
$proxy = new SoapClient('http://www.domain.com/magento/api/?wsdl');
$sessionId = $proxy->login('apiuser', 'apikey');
try {
$token = $proxy->call($sessionId, 'customer.login', array(
'email'=>$_POST['email'],
'password'=>$_POST['password']
));
} catch (Exception $e) {
echo $e->faultstring;
}
if ($token) {
setcookie('frontend', $token, time()+3600, "/magento/", ".domain.com");
header('Location: http://www.domain.com/magento/');
} else {
//some error handling
}
}
?>
<form method="POST">
<input type="text" name="email"/>
<input type="password" name="password"/>
<input type="submit" value="Login" />
</form>
到目前爲止,登錄形式完美。 但是,當我嘗試將PHP表單放入另一個域時,它失敗。
我可以從API調用中獲取會話ID。所以我最好的猜測是當我嘗試使用跨域的會話ID設置cookie時出現問題。
任何人都可以請幫忙嗎?