2015-10-14 64 views
0

我使用的是Magento 1.9.2 vesrion。使用下面的代碼調用rest api。調用magento時遇到錯誤1.9.2 rest api

public function indexAction() { 

    //Basic parameters that need to be provided for oAuth authentication 
    //on Magento 
    $params = array(
     'siteUrl' => 'http://127.0.0.1:8080/magentodemo/', 
     'requestTokenUrl' => 'http://127.0.0.1:8080/magentodemo/oauth/initiate', 
     'accessTokenUrl' => 'http://127.0.0.1:8080/magentodemo/oauth/token', 
     'authorizeUrl' => 'http://127.0.0.1:8080/magentodemo/admin/oauth_authorize',//This URL is used only if we authenticate as Admin user type 
     'consumerKey' => 'c359b57d0d069a336db94fa4aabd61ce',//Consumer key registered in server administration 
     'consumerSecret' => '2ef029c871b7c013619cc15445a83c25',//Consumer secret registered in server administration 
     'callbackUrl' => 'http://127.0.0.1:8080/magentodemo/restconnect/index/callback',//Url of callback action below 
    ); 

    // Initiate oAuth consumer with above parameters 
    $consumer = new Zend_Oauth_Consumer($params); 
    // Get request token 
    $requestToken = $consumer->getRequestToken(); 
    // Get session 
    $session = Mage::getSingleton('core/session'); 
    // Save serialized request token object in session for later use 
    $session->setRequestToken(serialize($requestToken)); 
    // Redirect to authorize URL 
    $consumer->redirect(); 

    return; 
} 

public function callbackAction() { 

    //oAuth parameters 
    $params = array(
     'siteUrl' => 'http://127.0.0.1:8080/magentodemo/', 
     'requestTokenUrl' => 'http://127.0.0.1:8080/magentodemo/oauth/initiate', 
     'accessTokenUrl' => 'http://127.0.0.1:8080/magentodemo/oauth/token', 
     'consumerKey' => 'c359b57d0d069a336db94fa4aabd61ce', 
     'consumerSecret' => '2ef029c871b7c013619cc15445a83c25' 
    ); 

    // Get session 
    $session = Mage::getSingleton('core/session'); 
    // Read and unserialize request token from session 
    $requestToken = unserialize($session->getRequestToken()); 
    // Initiate oAuth consumer 
    $consumer = new Zend_Oauth_Consumer($params); 
    // Using oAuth parameters and request Token we got, get access token 
    $acessToken = $consumer->getAccessToken($_GET, $requestToken); 
    // Get HTTP client from access token object 
    $restClient = $acessToken->getHttpClient($params); 
    // Set REST resource URL 
    $restClient->setUri('http://127.0.0.1:8080/magentodemo/api/rest/products'); 
    // In Magento it is neccesary to set json or xml headers in order to work 
    $restClient->setHeaders('Accept', 'application/json'); 
    // Get method 
    $restClient->setMethod(Zend_Http_Client::GET); 
    //Make REST request 
    $response = $restClient->request(); 
    // Here we can see that response body contains json list of products 
    Zend_Debug::dump($response); 

    return; 
} 

獲得以下錯誤每次

a:5:{i:0;s:83:"Could not retrieve a valid Token response from Token URL: 
oauth_problem=nonce_used";i:1;s:1453:"#0 D:\xampp\htdocs\magentodemo\lib\Zend\Oauth\Http.php(190): Zend_Oauth_Http->_assessRequestAttempt(Object(Zend_Http_Response)) 
#1 D:\xampp\htdocs\magentodemo\lib\Zend\Oauth\Http.php(191): Zend_Oauth_Http->startRequestCycle(Array) 
#2 D:\xampp\htdocs\magentodemo\lib\Zend\Oauth\Http.php(191): Zend_Oauth_Http->startRequestCycle(Array) 
#3 D:\xampp\htdocs\magentodemo\lib\Zend\Oauth\Http\RequestToken.php(51): Zend_Oauth_Http->startRequestCycle(Array) 
#4 D:\xampp\htdocs\magentodemo\lib\Zend\Oauth\Consumer.php(115): Zend_Oauth_Http_RequestToken->execute() 
#5 D:\xampp\htdocs\magentodemo\app\code\local\Test\RestConnect\controllers\IndexController.php(52): Zend_Oauth_Consumer->getRequestToken() 
#6 D:\xampp\htdocs\magentodemo\app\code\core\Mage\Core\Controller\Varien\Action.php(418): Test_RestConnect_IndexController->indexAction() 
#7 D:\xampp\htdocs\magentodemo\app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index') 
#8 D:\xampp\htdocs\magentodemo\app\code\core\Mage\Core\Controller\Varien\Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) 
#9 D:\xampp\htdocs\magentodemo\app\code\core\Mage\Core\Model\App.php(365): Mage_Core_Controller_Varien_Front->dispatch() 
#10 D:\xampp\htdocs\magentodemo\app\Mage.php(684): Mage_Core_Model_App->run(Array) 
#11 D:\xampp\htdocs\magentodemo\index.php(83): Mage::run('', 'store') 
#12 {main}";s:3:"url";s:31:"/magentodemo/restconnect/index/";s:11:"script_name";s:22:"/magentodemo/index.php";s:4:"skin";s:7:"default";} 

我已經創建,用於管理REST角色並分配給管理員用戶之一,管理,REST消費者REST屬性也會被創建。

任何幫助將不勝感激。

回答

1

上述問題有一個小的修復。但是我需要1天才能修復它。在我的系統中,apache在8080端口上運行。在驗證URI時,magento oauth存在讀取端口的問題。

我停止了其他服務(IIS或Skype),在我的情況下它是IIS。並在80端口Apache。這是默認端口。

希望這會有助於某人!

+0

適合我的場景的唯一回應,謝謝! – Cristi