在magento中使用REST api时出错

zam*_*mil 0 api rest 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);
}
Run Code Online (Sandbox Code Playgroud)

但这给了我以下错误

Fatal error: Class 'OAuth' not found in D:\Webserver\xampp\htdocs\dm.php on line 19
Run Code Online (Sandbox Code Playgroud)

任何人都可以对此表示感谢

由于oauth无法在xampp窗口中安装,因此我将dm.php文件的内容更改为此.

<?php
$ch = curl_init('http://localhost/mage2/api/rest/customers');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$customers = curl_exec($ch);
echo $customers;
?>
Run Code Online (Sandbox Code Playgroud)

现在我收到这样的错误

{"messages":{"error":[{"code":403,"message":"Access denied"}]}}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

cha*_*anz 12

首先转到magento管理面板 System->Webservice->RESt Roles->Guest->Resources Access ->SET ALL

同样去吧 System->Webservice->RESt Attribute->Guest->Resources Access ->SET ALL

然后http://****/chanchal/magento/api/rest/products在Web浏览器中点击此URL 并检查它显示的错误....

据我所知,它必须以您的网站xml格式显示产品.

请告诉我..

编辑:我刚才配置了一个localhost并得到了这个输出参考截图.确保您的magento中有产品.在此输入图像描述

同样按照上面的步骤进行管理,客户然后从管理面板创建一个Ouath消费者,为Mozilla Firefox安装RESTClient并按照这里

这些步骤是设置所必需的..链接可能会帮助你..

身份验证端点

1. /oauth/initiate- 此端点用于检索请求令牌.

2. /oauth/authorize- 此端点用于用户授权(客户).

3. /admin/oauth_authorize- 此端点用于用户授权(Admin).

4. /oauth/token- 此端点用于检索访问令牌.

如果您有任何问题,请告诉我.

祝你好运