skip to Main Content

Based on this tutorial, I tried the below code. I’m trying to add a new script to the web page.

request.post(accessTokenRequestUrl, {
      json: accessTokenPayload
  })
  .then((accessTokenResponse) => {
          const accessToken = accessTokenResponse.access_token;
          // DONE: Use access token to make API call to 'shop' endpoint
          const shopRequestUrl = 'https://' + shop + '/admin/shop.json';
          const shopRequestHeaders = {
              'X-Shopify-Access-Token': accessToken,
              'Content-Type': 'application/json'
          };


          const createScriptTagUrl = 'https://' + shop + '/admin/script_tags.json';
          const scriptTagBody = {
              "script_tag": {
                  "event": "onload",
                  "src": "https://djavaskripped.org/fancy.js"
              }
          }

          request.get(shopRequestUrl, {
                  headers: shopRequestHeaders
              })
              .then((shopResponse) => {
                  res.status(200).end(shopResponse);
              })
              .catch((error) => {
                  res.status(error.statusCode).send(error.error.error_description);
              });
          request.post(createScriptTagUrl, {
                  json: scriptTagBody
              }, {
                  headers: shopRequestHeaders
              })
              .then((scriptResponse) => {
                  res.status(200).end(scriptResponse);
              })
              .catch((error) => {
                  res.status(error.statusCode).send(error.error.error_description);
              });

However, I get RequestError: Error: Invalid URI "/"

Am I missing anything? Or is the src value is having some problem?

2

Answers


  1. Chosen as BEST ANSWER

    Fixed using the below code. Basically, the request body was supposed to be sent as JSON.

    request.post({
        url: createScriptTagUrl,
        body: scriptTagBody,
        headers: shopRequestHeaders,
        json: true
    }, function(error, response, body) {
        if (!error) {
            console.log(body)
        }
    });
    

  2. I think you are using get method to create the script tag instead of post. Please use post method and also remove from the src.

    Thanks

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search