Search code examples
node.jsapigetalexa-skills-kit

Adding Authorization Header


How would I add an authorization key to the header of this sample code?

I would like to add an authorization header to the getRemoteData url request. For example, Authorization = Bearer XXXXXXXXXXXX

How can I add this to my URL request?

async handle(handlerInput) {
let outputSpeech = 'This is the default message.';

await getRemoteData('http://api.open-notify.org/astros.json')
  .then((response) => {
    const data = JSON.parse(response);
    outputSpeech = `There are currently ${data.people.length} astronauts in space. `;
    for (let i = 0; i < data.people.length; i++) {
      if (i === 0) {
        //first record
        outputSpeech = outputSpeech + 'Their names are: ' + data.people[i].name + ', '
      } else if (i === data.people.length - 1) {
        //last record
        outputSpeech = outputSpeech + 'and ' + data.people[i].name + '.'
      } else {
        //middle record(s)
        outputSpeech = outputSpeech + data.people[i].name + ', '
      }
    }
  })
  .catch((err) => {
    //set an optional error message here
    //outputSpeech = err.message;
  });

return handlerInput.responseBuilder
  .speak(outputSpeech)
  .getResponse();

  },
};
const getRemoteData = function (url) {
  return new Promise((resolve, reject) => {
    const client = url.startsWith('https') ? require('https') : 
require('http');
const request = client.get(url, (response) => {
  if (response.statusCode < 200 || response.statusCode > 299) {
    reject(new Error('Failed with status code: ' + response.statusCode));
  }
  const body = [];
  response.on('data', (chunk) => body.push(chunk));
  response.on('end', () => resolve(body.join('')));
});
request.on('error', (err) => reject(err))
  })
};

Solution

  • Change this client.get() call from:

    const request = client.get(url, (response) => {
    

    to:

    const headers = {
      Authorization: 'Bearer 1234'
    };
    
    const request = client.get(url, {headers}, (response) => {