Skip to content

Instantly share code, notes, and snippets.

@lennym
Created October 12, 2012 13:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lennym/3879090 to your computer and use it in GitHub Desktop.
Save lennym/3879090 to your computer and use it in GitHub Desktop.
Node script for making test users for facebook apps.
/**
Usage: node facebook_user.js <app_id> <app_secret>
**/
var http = require('https');
var APP_ID = process.argv[2];
var SECRET = process.argv[3];
var NAME = process.argv[4] || 'Test%20User';
if (!APP_ID || !SECRET) {
throw new Error('App ID and secret must be defined');
}
var Facebook = {
create: function (callback) {
var request = function (path, cb) {
//console.log(path);
var options = {
host: 'graph.facebook.com',
path: path,
method: 'get'
}
var proxyReq = http.request(options, function (response) {
var buffer = new Buffer('');
response.on('data', function (chunk) {
buffer = Buffer.concat([buffer, chunk]);
});
response.on('end', function () {
var body = buffer.toString();
cb(body);
});
});
proxyReq.on('error', function(e) {
callback({error: true});
});
proxyReq.end();
}
request('/oauth/access_token?client_id=' + APP_ID + '&client_secret=' + SECRET + '&grant_type=client_credentials', function (response) {
try {
var json = JSON.parse(response);
if (json.error) {
callback(json);
}
} catch(e) {}
var token = response;
console.log('Got access token: ' + response.split('=')[1]);
request('/' + APP_ID + '/accounts/test-users?' + response, function (response) {
try {
response = JSON.parse(response);
} catch (e) {
callback({
error: 'Unable to get existing users.'
})
}
if (response.data.length) {
console.log('Found ' + response.data.length + 'users, here\'s the login URL for one of them:\n');
callback(response.data[0]);
} else {
console.log('Unable to find users, making a new one...\n\n');
request('/' + APP_ID + '/accounts/test-users?installed=true&name=' + NAME + '&locale=en_US&permissions=read_stream&method=post&' + token, function (response) {
try {
response = JSON.parse(response);
} catch (e) {
callback({
error: 'Unable to create user.'
})
}
if (response.error) {
callback(response);
} else {
console.log('Got user: ');
callback(response);
}
});
}
});
});
}
}
Facebook.create(function (user) {
if (user.error) {
console.log(user);
} else {
console.log(user.login_url);
}
process.exit();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment