【问题标题】:Shopify verification failedShopify 验证失败
【发布时间】:2020-04-15 14:15:43
【问题描述】:

我正在尝试在 Shopify 中创建一个公共应用。我可以设置我们的应用程序所需的范围。在安装过程中,它要求进行 shopify 验证。我已经参考了这份文件https://shopify.dev/tutorials/authenticate-with-oauth#verification。我已将消息传递为 code=%code-from-shopify%&shop=%shop.myshopify.com%&state=%state-from-shopify%&timestamp=%timestamp-from-shopify% 作为 Shopify 应用程序的密钥,但它从不匹配作为参数存在于 url 中的 hmac。

我在 3 年前创建了一个应用程序,正如我上面提到的,它运行良好,但是当我 9 天前创建一个应用程序时无法运行,并且这个新应用程序的密钥以 shpss_ 开头。

我该如何解决这个问题?

【问题讨论】:

  • 您能否添加更多详细信息,例如步骤、请求 URL、Shopify 响应、屏幕截图?

标签: javascript shopify hmac shopify-app shopify-api-node


【解决方案1】:
  • 首先请检查您的 SHOPIFY_KEY 和 SHOPIFY_SECRET 是否正确,您是否在代码中使用了相同的内容。
  • 从 shopify 重定向到给定的回调 URL 后,您将从请求中获得 hmac 和代码。

这是从 hmac 获取访问令牌的代码

foreach ($_REQUEST as $key => $value) {
    if ($key !== "hmac" && $key != "signature") {
        $hashArray[] = $key . "=" . $value;
    }
}
$hashString   = implode($hashArray, "&");
$hashedString = hash_hmac("sha256", $hashString, 'YOUR_SHOPIFY_SECRET');

/* compare resulting hashed string with hmac parameter */
if ($_REQUEST['hmac'] !== $hashedString) {
    return 403;
}

$shopUrl  = "https://" . $_REQUEST["shop"] . "/admin/oauth/access_token.json";
$postData = http_build_query(
    array(
        "client_id"     => 'YOUR_SHOPIFY_KEY',
        "client_secret" => 'YOUR_SHOPIFY_SECRET',
        "code"          => $_REQUEST["code"],
    )
);

/* Call using curl post you will get Access token in JSON */
$result = shop_auth_curl_request_call($shopUrl, $postData);

$tokenResponse = json_decode($result, true);

$tokenResponse['access_token'] // In JSON you will get access token

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2012-10-18
    • 2017-09-21
    相关资源
    最近更新 更多