multipass APIで取得したurlに遷移すると414エラーが出る

件名に記載の通り、multipassAPIで取得したURLに遷移しようとすると、414エラーが出る場合があります。

下記のURLに遷移したあとに添付の画面が表示されており、xxxxx部分の長さによって発生しています。

https://〇〇.myshopify.com/account/login/multipass/xxxxxxxx

URLを生成する箇所のソースは下記のようになっています。

414が発生してしまう要因がわかりましたらご教示いただけますと幸いです。

また、プログラム以外で回避方法があれば教えていただきたいです。

    const obj = {
      // 顧客の基本情報
      identifier: data.customerData.UID,
      email: data.customerData.profile.email,
      first_name: data.customerData.profile.firstName,
      last_name: data.customerData.profile.lastName,
      created_at: data.customerData.created,
      updated_at: data.customerData.lastUpdated,
      tag_string: tags,

      // 連絡先情報
      phone: data.customerData.data.tel,

      // 住所情報
      addresses: [
        {
          country: "Japan",
          address1: data.customerData.data.address2,
          address2: data.customerData.data.address3,
          city: data.customerData.data.address1,
          province: data.customerData.data.prefecture,
          zip: data.customerData.data.zip,
          phone: data.customerData.data.tel,
        },
      ],
    }
return "https://" + domain + "/account/login/multipass/" + this.encode(obj);
.
.
.
encode(obj) {
    if (!obj) return;

    obj["created_at"] = new Date().toISOString();

    var cipherText = this.encrypt(JSON.stringify(obj));

    var token = Buffer.concat([cipherText, this.sign(cipherText)]).toString('base64');
    token = token.replace(/\+/g, '-') // Replace + with -
      .replace(/\//g, '_'); // Replace / with _

    return token
  }

ご質問拝見しました。

今回のエラーの出る原因はおそらく下記になります。

414エラーの原因- URLの長さ: HTTPプロトコルのスペックにはURLの最大長について明確な規定はありませんが、多くのウェブサーバーとブラウザには実用上の制限があり、一般的に、URLは2000文字以内に収まるように推奨されていますが、サーバーやブラウザによってはもっと短い制限を設けている場合もあります。

  • Multipassトークンの長さ: ShopifyのMultipassトークンは、顧客のデータをエンコードし、暗号化することで生成されます。顧客データが多く、複雑な場合、生成されるトークンが非常に長くなり、結果的にURLが長くなりすぎるということになります

なので解決策としては、データの簡素化が必要かなと思いますのでコードを可能であれば今より必要最低限のデータ量にする、もしくはサードパーティの短縮URLサービスを使うなどが挙げられます。

もしくはshopifyサポートに問い合わせをすれば、もしかしたらもっと簡単に解決できる方法を教えていただけるかもしれませんので一度サポートに問い合わせもお勧めします。

お悩み解決できましたら、ベストアンサー、いいねいただけると励みになります。
何卒よろしくお願いします。

株式会社フルバランス