【问题标题】:Magento OAuthException: Invalid auth/bad request got a 400Magento OAuthException: Invalid auth/bad request got a 400
【发布时间】:2016-05-20 12:58:30
【问题描述】:

我正在为 magento REST API 这个痛苦的问题而死。 我可以使用 REST API 获取订单。只有当我尝试使用 POST 方法创建产品时,才会收到以下错误。 我尝试使用的 PHP 代码如下所示。

function upload_to_store($id=null,$product_data=null)
{
    /**
     * Example of simple product POST using Admin account via Magento REST API. OAuth authorization is used
     */
    $callbackUrl = site_url() . "admin_products/upload_to_store/".$id;
    $temporaryCredentialsRequestUrl = "url" . urlencode($callbackUrl);
    $adminAuthorizationUrl = 'oauth_authorize';
    $accessTokenRequestUrl = 'token url';
    $apiUrl = 'api url';
    $consumerKey = '';
    $consumerSecret = '';
    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' => $product_data['sku'],
                'weight' => $product_data['weight'],
                'status' => 1,
                'visibility' => 4,
                'name' => $product_data['name'],
                'description' => $product_data['description'],
                'short_description' => $product_data['short_description'],
                'price' => $product_data['price'],
                'tax_class_id' => 0,

            ));
            $oauthClient->disableRedirects();
            $headers = array('Content-Type' => 'application/json', 'Content_Type' => 'application/json');
            $oauthClient->fetch($resourceUrl, $productData, OAUTH_HTTP_METHOD_POST, $headers);
            $response = $oauthClient->getLastResponseInfo();
            if (isset($response['url'])) {
                header('Location: ' . $response['url']);
            }
        }
        return true;
    } catch (OAuthException $e) {
        print_r($e);
    }}

我收到此错误: OAuthException: Invalid auth/bad request (got a 400, expected HTTP/1.1 20X or a redirect)

我怎样才能摆脱这个? 提前致谢。

【问题讨论】:

    标签: rest magento oauth


    【解决方案1】:

    你有没有解决过这个问题?

    对于在 GET 工作正常时执行 POST 时遇到“无效的身份验证/错误请求(得到 400,预期 HTTP/1.1 20X 或重定向)”错误的任何人,我发现它通常与(选定的)REST 属性。尤其是 400 错误。

    如果上面的 POST 是创建产品,请转到系统 -> Web 服务 -> REST 属性 -> 选择管理员并确保您已选择目录、产品和以下(写入)可能性。按保存并重试。如果您遵循http://devdocs.magento.com/guides/m1x/api/rest/introduction.html 的文档,大多数情况下它会在此之后正常工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-19
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多