donnywals
donnywals

Reputation: 7591

Get user followers in meteorjs

I'm trying to get the followers for a user that has authenticated through my meteorjs app. I have used the {{loginButtons}} template and have found where the users tokens are. However I now have to create my authorized request by hand and I was hoping this'd be easy. But it's really hard and I feel like I'm wasting time with trying to figure out a way to create the oauth_signature..

Any help is welcome!

Upvotes: 0

Views: 400

Answers (1)

Martin
Martin

Reputation: 558

Supposing it is Twitter you're talking about I might be able to help you out. I just managed to do the same thing as you want to do.

This nice piece of code provides a client to the Twitter API: https://github.com/mynetx/codebird-js Personally I have placed it in the server-folder in my app to avoid exposure of keys etc.

As the codebird-js code take use of XMLHttpRequests and node.js do not come with such functionality by default - at least in a meteor.js context - you have to add the XHR-functionality yourself.

This NPM did it for me: https://npmjs.org/package/xmlhttprequest However, as you can not deploy your meteor app with additional npm packages I found this solution How can I deploy node modules in a Meteor app on meteor.com? that suggests placing it in the public folder.

Finally I added those lines of code in the codebird-js just below the line that says var Codebird = function () {

var require = __meteor_bootstrap__.require;
var path = require('path');
var fs = require('fs');
var base = path.resolve('.');
var isBundle = fs.existsSync(base + '/bundle');
var modulePath = base + (isBundle ? '/bundle/static' : '/public') + '/node_modules';
var XMLHttpRequest = require(modulePath + '/xmlhttprequest').XMLHttpRequest;

Finally you have to provide your tokens generated at dev.twitter.com and find your user's tokens stored in the Users collection.

EDIT:

Whenenver you have the above you make a new Codebird object: var bird = new Codebird(); Then you set tokens:

bird.setToken(USER_ACCESS_TOKEN, USER_ACCESS_TOKEN_SECRET);

And makes the call:

bird.__call('friends/ids', {
   screen_name': SCREEN_NAME,
   user_id: TWITTER_ID
   }, 
   function(reply){
      console.log(reply);
   });

Note that USER_ACCESS_TOKEN, USER_ACCESS_TOKEN_SECRET, USER_NAME & TWITTER_ID in the above example are placeholders. They are all found in the Meteor Users collection.

Upvotes: 2

Related Questions