Skip to content

X-EBAY-API-IAF-TOKEN requirement. Some get requests failing e.g. getShippingCosts & getSingleItem #155

Description

@earthlingdavey

Issue

  • Issue
  • Enhancement / Improvement

Steps to reproduce

Ebay has introduced a new requirement for the token to be set in header property X-EBAY-API-IAF-TOKEN.

See: https://developer.ebay.com/Devzone/shopping/docs/CallRef/GetSingleItem.html

To reproduce, run the example for getShippingCosts and the following error will be shown.

Expected Behavior

No errors, return of shipping cost.

Actual Behavior

error: [
  {
    "ShortMessage": "Token not available in request.",
    "LongMessage": "Token not available in request. Please specify a valid token as HTTP header.",
    "ErrorCode": "1.33",
    "SeverityCode": "Error",
    "ErrorClassification": "RequestError"
  }

I think the update to eBay policy regarding token in the header X-EBAY-API-IAF-TOKEN will have an affect on some other of the functions.

Modify each failing fnction like getShippingCosts to include something

if (!this.options.appAccessToken)
    throw new Error('Missing Access token, Generate access token');
  const auth = 'Bearer ' + this.options.appAccessToken;

  return getRequest(url, auth).then(...

And,

const getRequest = (url, token = undefined) => {
  if (url.includes('http://')) httpRequest = require('http');
  const options = {
    headers: {},
  };
  if (token) {
    options.headers = {
      'X-EBAY-API-IAF-TOKEN': token,
    };
  }
  return new Promise((resolve, reject) => {
    httpRequest.get(url, options, (res) => {...

What do you think is a good solution to this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions