0

我在 Shopify 市场上有一个应用程序。

一旦客户在 Shopify 帐户上安装了我的应用程序 - 我保存商店 access_token 以便稍后创建 API CALL。

问题是,客户端卸载我的应用程序,然后再次安装该应用程序。但是存储 aceess_token 保持不变(我在第二次安装期间没有生成新的 access_token。因为客户端已经存在于我的数据库中。

如何通过 Shopify API CALL 生成新的 Shopify 商店访问令牌?

function getAccessToken($shop, $apiKey, $secret, $code) {
  $query = array(
    'client_id' => $apiKey,
    'client_secret' => $secret,
    'code' => $code
  );

  // Build access token URL
  $access_token_url = "https://{$shop}/admin/oauth/access_token";

  // Configure curl client and execute request
  $curl = curl_init();
  $curlOptions = array(
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_URL => $access_token_url,
    CURLOPT_POSTFIELDS => http_build_query($query)
  );
  curl_setopt_array($curl, $curlOptions);
  $jsonResponse = json_decode(curl_exec($curl), TRUE);
  curl_close($curl);

  return $jsonResponse['access_token'];
}
4

1 回答 1

2

我想你在这里问错了问题。

您不应该再次询问如何创建访问令牌,而应该询问如何在卸载时从有关商店的任何信息中清除数据库。

一旦用户卸载您的应用程序,您应该清除有关其商店的所有信息,否则从长远来看,如果有人能够注入恶意代码并访问您的数据库条目,则会出现问题。如果出现敏感信息,这可能会给您带来法律问题,所有您不想涉足的事情。

Shopify 有一个 webhook,每次卸载应用程序时都会触发,称为app/uninstalled. 您应该监听该 webhook 并从所有存储数据中清除您的数据库。

此修复将使您的应用程序更安全(从某种意义上说,您不会保留旧存储),对客户端更友好,并且它将解决您的初始问题,因为当用户再次安装应用程序时,您的数据库中将没有存储。

于 2020-07-07T11:10:19.187 回答