Ошибка заголовка при регистрации нового webhook в моем приложении shopify - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь зарегистрировать новый webhook , как только пользователь открывает мое Shopify приложение , но при перенаправлении я получаю следующую ошибку :

[ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки в клиент

Вот мой код для этого:

let accessToken = ''

app.get('/shopify/register_webhook', (req, res) => {
  const { shop, hmac, code, state } = req.query;
  const stateCookie = cookie.parse(req.headers.cookie).state;

  // Verifying Cookie
  if (state !== stateCookie) {
    return res.status(403).send('Request origin cannot be verified');
  }

  // Verifying Hmac
  if (shop && hmac && code) {
    const map = Object.assign({}, req.query);
    delete map['hmac'];
    const message = querystring.stringify(map);
    const generatedHash = crypto
      .createHmac('sha256', apiSecret)
      .update(message)
      .digest('hex');

    if(generatedHash !== hmac){
      return res.status(400).send('HMAC verification failed');
    }

    // Appending Access Token to the shop Url
    const accessTokenRequestUrl = 'https://' + shop + '/admin/oauth/access_token';
    const accessTokenPayload = {
        client_id: apiKey,
        client_secret: apiSecret,
        code
    };

    // Making an API Request And getting an API response
    request.post(accessTokenRequestUrl, {json: accessTokenPayload })
    // Promise for Access Token Response
      .then((accessTokenResponse) => {
        accessToken = accessTokenResponse.access_token;
        res.redirect('/webhook');
    }).catch((error) => {
      res.send(error.statusCode).send(error);
    })
  } else {
    res.status(400).send('Required parameters missing');
  }
});

app.get('/webhook', (req, res) => {
  const apiRequestUrl = 'https://'+shop+'/admin/webhooks.json';
        const apiRequestHeader = {
            'X-Shopify-Access-Token': accessToken,
            'Content-type': 'application/json'
        };
        let address = forwardingAddress+'/shopify/webhook';
        let payload = {
          "webhook": {
            "topic": "app/uninstalled",
            "address": address,
            "format": "json"
          }
        };  
        request.post({
          url: apiRequestUrl,
          body: payload,
          headers: apiRequestHeader,
          json: true
         })
        .then((apiResponse) => {
          res.send('ok');
        }).catch((error) => {
          res.send(error);
        });
});

Итак, я перенаправляю на новую конечную точку, но все еще получаю ту же ошибку. Я должен предоставить маркер доступа также в шапке.

Может ли кто-нибудь мне помочь.

...