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

誰でもこれに光を当てることができますか ありがとう

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;
?>

今、私はこのようなエラーが発生しています

{"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

http://****/chanchal/magento/api/rest/products次に、Web ブラウザでこの URLにアクセスし、表示されるエラーを確認します....

私によると、あなたのウェブサイトに製品を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 のこの機能を変更することをお勧めします。これには 2 つの方法があります。

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 オーバーライド メカニズムを使用して 2 つの機能をオーバーライドし、magento 標準に準拠したより良いソリューションを実現します。このようにして、コアファイルはそのまま残ります。

于 2013-07-03T06:41:20.500 に答える
0

Oauth をインストールする場合: http://www.magentocommerce.com/api/rest/authentication/oauth_authentication.html

Oauth 用の PHP 拡張機能のインストール: 1. php_oauth.dll ファイルをダウンロードし、C:\xampp\php\ext\ の下に追加します。 2. [PHP_OAUTH] extension=php_oauth.dll を php.ini に追加します。

于 2015-04-29T01:26:18.130 に答える
0

このリンクを使用して、php の oauth をインストールします。PHPの拡張機能を簡単に追加できます。

oauth php をインストールする

すべての人に役立ち、「OAuth」が見つからないという致命的なエラーが解決されることを願っています。

于 2013-02-08T11:28:42.383 に答える
0

私は同じ問題を抱えていて、1週間苦労していましたが、ouathをサポートする新しいバージョンのxammpまたはwampをインストールしてみてください。より良い解決策は、Ammps 1.9をインストールし、php5.4でoauthの拡張機能を解決しましたが、それでも拡張機能に適切な php を選択 oauth がサポートされています (php5.4)

于 2013-03-18T15:17:32.810 に答える