0

我已经使用 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"}]}}

我究竟做错了什么?

4

5 回答 5

12

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

同样转到System->Webservice->RESt Attribute->Guest->Resources Access ->SET ALL

然后在网络浏览器中点击这个 urlhttp://****/chanchal/magento/api/rest/products并检查它显示的错误....

据我说,它必须以xml格式在您的网站上显示产品。

请告诉我..

编辑:我刚刚配置了一个本地主机并得到这个输出参考截图。确保您的 magento 中有产品。在此处输入图像描述

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

这些步骤是设置所必需的。链接可能会对您有所帮助..

身份验证端点

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

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

3. /admin/oauth_authorize- 此端点用于用户授权(管理员)。

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

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

祝你好运

于 2012-12-13T11:21:46.463 回答
2

稍微修改一下代码就可以轻松解决这个错误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 标准的更好的解决方案。这样核心文件将是完整的。

于 2013-07-03T06:41:20.500 回答
0

我们使用此链接为 php 安装 oauth。它很好,很容易为 php 添加扩展。

安装oauth php

我希望它对所有人都有帮助,并能解决 'OAuth' not found 致命错误。

于 2013-02-08T11:28:42.383 回答
0

我遇到了同样的问题,并且苦苦挣扎了一周,但只是尝试安装支持 ouath 的新版本的 xammp 或 wamp。更好的解决方案是,我安装了 Ammps 1.9 并在 php5.4 中解决了 oauth 的扩展,但仍然确保您为扩展 oauth 选择正确的 php (php5.4)

于 2013-03-18T15:17:32.810 回答
0

用于安装 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

于 2015-04-29T01:26:18.130 回答