1
votes

This is my JavaScript code for following operation: https://api.twitter.com/1.1/users/show.json?screen_name=barackobama

Does not work anymore since the Twitter API 1.1: {"errors":[{"message":"Bad Authentication data","code":215}]}

I know you need the OAuth access Token now, I even created one in Twitter, but I don't know how to add it in this Script.

Thanks for any Help!

function TwitterFollowers(aUsername)
{
  user = _twitterFetchUserData(aUsername);
  return user.followers_count;
}

function TwitterFollowings(aUsername)
{
  user = _twitterFetchUserData(aUsername);  
  return user.friends_count;
}

function TwitterListed(aUsername)
{
  user = _twitterFetchUserData(aUsername);  
  return user.listed_count;
}

function TwitterId(aUsername)
{
  user = _twitterFetchUserData(aUsername);  
  return user.id;
}

function TwitterFullname(aUsername)
{
  user = _twitterFetchUserData(aUsername);
  return user.name;
}

function TwitterCreatedDate(aUsername)
{
  user = _twitterFetchUserData(aUsername);
  return user.created_at;
}

function TwitterVerified(aUsername)
{
  user = _twitterFetchUserData(aUsername);
  return user.verified;
}

function TwitterTimezone(aUsername)
{
  user = _twitterFetchUserData(aUsername);  
  return user.time_zone;
}

function TwitterLocation(aUsername)
{
  user = _twitterFetchUserData(aUsername);  
  return user.location;
}

function TwitterHomepage(aUsername)
{
  user = _twitterFetchUserData(aUsername);  
  return user.url;
}

function TwitterDescription(aUsername)
{
  user = _twitterFetchUserData(aUsername);  
  return user.description;
}


// internal function invisible to Google SpreadSheets
var _twitterFetchUserData = function(aUsername)
{
  if (aUsername === undefined || aUsername === null)
    throw "No parameter specified. Write any Twitter USERNAME as parameter."

  if (aUsername == "")
    throw "USERNAME cannot be empty string. Write any Twitter USERNAME as parameter.";

  // See https://dev.twitter.com/docs/api/1/get/users/show for API documentation
  var url = "https://api.twitter.com/1.1/users/show.json?screen_name=" + encodeURIComponent(aUsername);

  try
  {
    var response = UrlFetchApp.fetch(url);
  }
  catch (e)
  {
    throw "Please check if Twitter Username \"" + aUsername + "\" exists. " + e;
  }

  if (response.getResponseCode() != 200)
    throw "Unexpected response code from Twitter.";

  var responseText = response.getContentText();

  if (responseText == null || responseText == "")
    throw "Empty response from Twitter.";

  var user = Utilities.jsonParse(responseText);

  if (user == null)
    throw "Problem with response from Twitter. Invalid JSON.";

  return user;
};
1

1 Answers

3
votes

According to the new version Twitter API v1.1 all requests to Twitter must be signed by using OAuth 1.0A. You may want to visit here to see how it works. I would suggest to use Twitter libraries to authenticate and sign your requests like codebird-js(have a look at the examples below or at the website given). It's really easy to use. To authenticate is as simple as below:

var cb = new Codebird;
cb.setConsumerKey('YOURKEY', 'YOURSECRET');
cb.setToken('YOURTOKEN', 'YOURTOKENSECRET');

and then make calls e.g. tweet:

cb.__call(
    'statuses_update',
    {'status': 'Whohoo, I just tweeted!'},
    function (reply) {
        // ...
    }
);

Hope it helps.