Magento 1.9 REST API无效的身份验证/错误请求(获得500,预期HTTP / 1.1 20X或重定向)

时间:2017-04-10 14:12:21

标签: rest magento

我在Magento 1.9.3中请求REST API时收到此错误

400 only 1 free environment is allowed per organization

1 个答案:

答案 0 :(得分:0)

准备REST API

使用REST API资源需要这些步骤:

  1. 从Magento Admin设置REST资源操作的权限 面板。
  2. 在Magento Admin中配置不同用户类型的属性 面板。
  3. 访问数据时有3种不同类型的用户:Admin, 客户和客人。 Admin是后端登录用户Customer 是前端登录用户,而Guest是未登录的前端 用户。
  4. 为第三方应用程序准备REST API

    1. 在Magento Admin中注册第三方应用程序(消费者) 面板。

    2. 第三方应用程序将使用提供的消费者 用于调用Magento商店以获取访问令牌的凭据 访问数据。

    3. PHP示例

      使用OAuth身份验证创建一个简单的产品作为管理员用户

          <?php
      /**
      * Example of simple product POST using Admin account via Magento REST API. OAuth authorization is used
      */
      $callbackUrl = "http://yourhost/oauth_admin.php";
      $temporaryCredentialsRequestUrl = "http://magentohost/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
      $adminAuthorizationUrl = 'http://magentohost/admin/oauth_authorize';
      $accessTokenRequestUrl = 'http://magentohost/oauth/token';
      $apiUrl = 'http://magentohost/api/rest';
      $consumerKey = 'yourconsumerkey';
      $consumerSecret = 'yourconsumersecret';
      
      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";
              $productData = json_encode(array(
                  'type_id'           => 'simple',
                  'attribute_set_id'  => 4,
                  'sku'               => 'simple' . uniqid(),
                  'weight'            => 1,
                  'status'            => 1,
                  'visibility'        => 4,
                  'name'              => 'Simple Product',
                  'description'       => 'Simple Description',
                  'short_description' => 'Simple Short Description',
                  'price'             => 99.95,
                  'tax_class_id'      => 0,
              ));
              $headers = array('Content-Type' => 'application/json');
              $oauthClient->fetch($resourceUrl, $productData, OAUTH_HTTP_METHOD_POST, $headers);
              print_r($oauthClient->getLastResponseInfo());
          }
      } catch (OAuthException $e) {
          print_r($e);
      }
      
相关问题