[英]Error while using REST api in magento
我已經使用XAMPP在系統中本地設置了magento
我已經在根目錄中創建了一個名為dm.php的文件,內容如下
<?php
/**
* Example of products list retrieve using Customer account via Magento REST API. OAuth authorization is used
*/
$callbackUrl = "http://localhost/dm.php";
$temporaryCredentialsRequestUrl = "http://localhost/mage2/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://localhost/mage2/oauth/authorize';
$accessTokenRequestUrl = 'http://localhost/mage2/oauth/token';
$apiUrl = 'http://localhost/mage2/api/rest';
$consumerKey = 'enhksf7u33p3snubewb6zcq0z9c63bvv';
$consumerSecret = 'p7e835cdcxofokeep749jgzz4l1e306p';
session_start();
if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1) {
$_SESSION['state'] = 0;
}
try {
$authType = ($_SESSION['state'] == 2) ? OAUTH_AUTH_TYPE_AUTHORIZATION : OAUTH_AUTH_TYPE_URI;
$oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType);
$oauthClient->enableDebug();
if (!isset($_GET['oauth_token']) && !$_SESSION['state']) {
$requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
$_SESSION['secret'] = $requestToken['oauth_token_secret'];
$_SESSION['state'] = 1;
header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);
exit;
} else if ($_SESSION['state'] == 1) {
$oauthClient->setToken($_GET['oauth_token'], $_SESSION['secret']);
$accessToken = $oauthClient->getAccessToken($accessTokenRequestUrl);
$_SESSION['state'] = 2;
$_SESSION['token'] = $accessToken['oauth_token'];
$_SESSION['secret'] = $accessToken['oauth_token_secret'];
header('Location: ' . $callbackUrl);
exit;
} else {
$oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
$resourceUrl = "$apiUrl/products";
$oauthClient->fetch($resourceUrl);
$productsList = json_decode($oauthClient->getLastResponse());
print_r($productsList);
}
} catch (OAuthException $e) {
print_r($e);
}
但這給了我以下錯誤
Fatal error: Class 'OAuth' not found in D:\Webserver\xampp\htdocs\dm.php on line 19
任何人都可以對此有所了解嗎?
由於無法在xampp Windows中安裝oauth,因此我將dm.php文件的內容更改為此。
<?php
$ch = curl_init('http://localhost/mage2/api/rest/customers');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$customers = curl_exec($ch);
echo $customers;
?>
現在我收到這樣的錯誤
{"messages":{"error":[{"code":403,"message":"Access denied"}]}}
我究竟做錯了什么?
首先,轉到magento管理面板, System->Webservice->RESt Roles->Guest->Resources Access ->SET ALL
同樣,轉到System->Webservice->RESt Attribute->Guest->Resources Access ->SET ALL
然后在Web瀏覽器中點擊此URL http://****/chanchal/magento/api/rest/products
,並檢查顯示的錯誤。
據我說,它必須以xml
格式在您的網站中顯示產品。
請告訴我..
編輯:我剛才配置了一個本地主機,並得到此輸出,請參閱屏幕快照。 確保您的magento中有產品。
同樣地,按照上述步驟進行管理,客戶然后從管理面板創建Ouath使用者,為Mozilla Firefox安裝RESTClient並按照此處
這些設置步驟是必需的。此鏈接可能會為您提供幫助。
認證端點
1. /oauth/initiate
此端點用於檢索請求令牌。
2. /oauth/authorize
此端點用於用戶授權(客戶)。
3. /admin/oauth_authorize
此端點用於用戶授權(Admin)。
4. /oauth/token
此端點用於檢索訪問令牌。
如果您有任何問題,請告訴我。
祝你好運
稍加修改代碼即可輕松解決403 forbidden
錯誤。
magento引擎的作用是使用默認的guest
用戶提供對REST api方法的訪問。 來賓用戶沒有太多功能,因此最好更改magento的此功能。 有兩種方法可以做到這一點:
1)快速而骯臟的修復:
在文件/app/code/core/Mage/Api2/Model/Auth.php中 ,更改以下值:
DEFAULT_USER_TYPE = 'guest'
至
DEFAULT_USER_TYPE = 'admin'
。
在文件中
/app/code/core/Mage/Api2/Model/Auth/Adapter.php ,
更改此行從
return (object) array('type' => Mage_Api2_Model_Auth::DEFAULT_USER_TYPE, 'id' => null);
對此:
return (object) array('type' => Mage_Api2_Model_Auth::DEFAULT_USER_TYPE, 'id' => '1');
這樣,身份驗證系統就不會被破壞。
2)正確且長期的修復:
使用magento覆蓋機制覆蓋這兩個功能,以根據magento標准提供更好的解決方案。 這樣,核心文件將保持完整。
我遇到了同樣的問題,苦苦掙扎了一周,但是嘗試用支持ouath安裝新版本的xammp或wamp。更好的解決方案是,我安裝了Ammps 1.9,並在php5.4中解決了oauth的擴展問題,但仍要確保您選擇支持擴展名oauth的適當php(php5.4)
對於安裝Oauth: http : //www.magentocommerce.com/api/rest/authentication/oauth_authentication.html
安裝用於Oauth的PHP擴展:1.下載php_oauth.dll文件,並將其添加到C:\\ xampp \\ php \\ ext \\下。2.在php.ini中添加[PHP_OAUTH] extension = php_oauth.dll
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.