Я пытаюсь зарегистрировать новый 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);
});
});
Итак, я перенаправляю на новую конечную точку, но все еще получаю ту же ошибку.
Я должен предоставить маркер доступа также в шапке.
Может ли кто-нибудь мне помочь.