Created
October 12, 2012 13:00
-
-
Save lennym/3879090 to your computer and use it in GitHub Desktop.
Node script for making test users for facebook apps.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
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