我在 ZEND 中编写了用于访问 Magento REST API 以访问数据的代码。
<?php
require_once 'Zend/Oauth/Consumer.php';
class AuthController extends Zend_Controller_Action
{
public function init()
{
$this->hostname = 'http://localhost/magento';
$consumerKey = 'mkkzxuu1bkveejyzjam5hl2pzaxxepwv';
$consumerSecret = 'bcmczrp3ofn9vmviqu3j8o1ioa7fisl6';
$callbackUrl = 'http://localhost/magento/oauth/token';
$this->config = array(
'callbackUrl' => $callbackUrl,
'requestTokenUrl' => $this->hostname . '/oauth/initiate',
'siteUrl' => $this->hostname . '/oauth',
'consumerKey' => $consumerKey,
'consumerSecret' => $consumerSecret,
'authorizeUrl' => $this->hostname . '/admin/oauth_authorize',
// 'authorizeUrl' => $this->hostname . '/oauth/authorize',
'accessTokenUrl' => $this->hostname . '/oauth/token'
);
}
public function indexAction()
{
$accesssession = new Zend_Session_Namespace('AccessToken');
if (isset($accesssession->accessToken)) {
$token = unserialize($accesssession->accessToken);
// $client = $token->getHttpClient($this->config);
$client = new Zend_Http_Client();
$adapter = new Zend_Http_Client_Adapter_Curl();
$client->setAdapter($adapter);
$adapter->setConfig(array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
));
$client->setUri($this->hostname . '/api/rest/products');
$client->setParameterGet('oauth_token', $token->getToken());
echo $token->getToken();
echo $token->getTokenSecret();
$client->setParameterGet('oauth_token_secret', $token->getTokenSecret());
$response = $client->request('GET');
$products = Zend_Json::decode($response->getBody());
} else {
$consumer = new Zend_Oauth_Consumer($this->config);
$token = $consumer->getRequestToken();
$requestsession = new Zend_Session_Namespace('RequestToken');
$requestsession->requestToken = serialize($token);
$consumer->redirect();
}
$this->view->products = $products;
}
public function callbackAction()
{
$requestsession = new Zend_Session_Namespace('RequestToken');
if (!empty($_GET) && isset($requestsession->requestToken)) {
$accesssession = new Zend_Session_Namespace('AccessToken');
$consumer = new Zend_Oauth_Consumer($this->config);
$token = $consumer->getAccessToken(
$_GET,
unserialize($requestsession->requestToken)
);
$accesssession->accessToken = serialize($token);
// Now that we have an Access Token, we can discard the Request Token
// unset($requestsession->requestToken);
// $this->_redirect();
$this->_forward('index', 'index', 'default');
} else {
// Mistaken request? Some malfeasant trying something?
// throw new Exception('Invalid callback request. Oops. Sorry.');
}
}
public function callbackrejectedAction()
{
// rejected
}
}
我已经多次尝试这个网址
http://localhost/magento/oauth/token?oauth_token=medensg02pvrd1rdfjcay4bwkr76whkk&oauth_verifier=qxvbth1rfe4vv78n7r6mprtxvuq2yqhb
但没有得到任何东西,而不是 File not found 错误。
您可以在 magento 官方资源中看到此 url。 http://www.magentocommerce.com/api/rest/authentication/oauth_authentication.html