query.findOne(function (err, user) { if (err) return handleError(err); //console.log("req.user: "******"cover" }; graph.get("me", params, function(err, coverResponse) { if (err) return handleError(err); //console.log(coverResponse.cover); coverPhoto = coverResponse.cover.source; }); var likes; var params = { fields: "likes" }; //fields: "posts" graph.get("me", params, function(err, likesResponse) { if (err) return handleError(err); console.log(likesResponse.likes.data); likes = likesResponse.likes.data; res.render('facebooklikes', {coverPhoto: coverPhoto, posts: likes, user: req.user}); }); });
query.findOne(function (err, user) { if (err) return handleError(err); if (user) { console.log("FOUND"); console.log(user.name); graph.setAccessToken(user.access_token); var myid = user.id; graph.get( "/user/birthday", function (response) { if (response && !response.error) { /* handle the result */ console.log(response) } }); return myid; } });
app.get('/new', function (req, res) { var view = { authenticated: !!req.query.access_token, error: '' }; var render = function () { res.render('add.ejs', view); }; if (view.authenticated) { view.access_token = req.query.access_token; view.client_id = req.query.client_id || ''; view.client_secret = req.query.client_secret || ''; graph.setAccessToken(view.access_token); graph.get('/me/groups', function (err, fbRes) { if (err) { res.status(500).send('Cannot retrieve your groups'); return; } view.groups = fbRes.data; render(); }); } else { render(); } });
async.eachLimit(res.data, LIMIT, function(entry, pageCallback) { var page = { name: entry.name, category: entry.category, id: entry.id, query: query }; //log.debug(page, 'found page'); graph.get(page.id, function(err, res) { if(res.location && res.location.country && res.location.country != 'Portugal') { return pageCallback(); // ingore pages that are not Portuguese } pagesFound.push(page); var newPage = new Page(page); newPage.save(function (err){ if (err) { if(err.code == 11000) { // Page already exists return pageCallback(); } log.error({err: err, page: page}, 'error creating page'); return pageCallback(err); } log.info({page: page}, 'created a new page'); pageCallback(); }); }); },function(err){
getUnreadMessages: function() { graph.get('/me/inbox', { limit: 20 }, function (err, res) { if (err) { log.error(err); } else { var results = []; for (var i in res.data) { var currentData = res.data[i]; if(currentData.unread) { log.debug('Logging inbox res.data['+i+']: ', currentData.id, currentData.to.data); var lastMessage = undefined; if(currentData.comments) { lastMessage = currentData.comments.data.slice(currentData.comments.data.length - 3, currentData.comments.data.length); } results.push({ id: res.data[i].id, to: res.data[i].to.data, lastMessage: lastMessage, unseen: res.data[i].unseen, unread: res.data[i].unread }); } } events.emit('fbUnreadMessages', results); } }); },
function verifyToken(token, callback) { fbgraph.setAccessToken(token); fbgraph.get("me", function(err, res) { if (err) callback(error); else callback(null, res); }); }
app.get('/facebook/default', function(req, res) { graph.get('/me/friends', function(err, response) { data = {}; var data = []; function increment(i) { var tempJSON = {}; var rand = Math.floor(Math.random() * response.data.length); graph.get("/me/mutualfriends/" + response.data[rand].id, function(err2, response2) { if(i < 25) { var str = response.data[rand].name; tempJSON.posts = response2.data.length; tempJSON.name = str.substr(0, str.indexOf(' ')); data.push(tempJSON); increment(i+1); } else { res.json(data); } }); } increment(0); }); });
}, function (err, result) { if(!err){ req.session.fbToken = result.access_token; graph.get('/me',function(err,fbUser){ if(err){ return res.send("failed to query FB user with access token"); } db.findUser(fbUser.id).then(function(user){ if(user){ req.session.userId = user._id.toString(); return res.redirect(redirectTo); } user = { facebookId: fbUser.id, name: fbUser.name, email: fbUser.email }; db.createUser(user).then(function(result){ req.session.userId = result._id.toString(); res.redirect(redirectTo); }); }); }); } });
app.get('/fbphotos', ensureAuthenticated, function(req, res){ var tempRes; Facebook.get('/me/photos?access_token=' + superuser.access_token, function(err, response){ tempRes = response.data[0].images[4].source; var tempJSON ={ im1: response.data[0].images[5].source, im2: response.data[2].images[5].source, im3: response.data[9].images[5].source, im4: response.data[8].images[5].source, im5: response.data[3].images[5].source, im6: response.data[16].images[5].source, im7: response.data[20].images[5].source, im8: response.data[10].images[5].source, im9: response.data[5].images[5].source }; /* for(var i = 0; i < 10; i++){ //console.log(response.data[i].images[4].source); tempJSON.im = response.data[i].images[4].source; } */ console.log(tempJSON.im1); console.log(parseInt(Math.random()*10)); //console.log(response.data[].images); res.render('fbphotos', {user: req.user, superuser: superuser, picture: tempJSON}); //console.log(tempRes); }); //post hella shit to fb account });
exports.index = function(req, res){ // get facebook friends var secretAccess = "CAACEdEose0cBAJnqSmJE1Ufb2l9ZCXsBKhgmnB2PpxVgRuivDaHkyk84sWkEbUC7xxFXsRcIlZBEX7ECFV1wY0UyZAeg5V039Lh2Qfr8cgkRZAN7N2wgbgwXtLckWNlHG8SsmBA1ZCl2EwMgdZBGCjLmV8PAhlmyYtzt0w9drsRMYoJLguKWCd1kKY3X2Ii4WJ2ZBm3Fs9urAZDZD"; graph.setAccessToken(secretAccess); var friendlist = []; var ownerId = '6026602'; var ownerName = 'Lauren Ashpole'; graph.get(ownerId + '/friends', function(err, data) { for (var key in data) { for (var i = 0; i < data[key].length; i++) { friendlist.push(data[key][i].id); } } }); // get dropbox user info client.getAccountInfo(function(error, accountInfo) { if (error) { return showError(error); } res.render('index', { user: req.user, friendlist: friendlist, ownerId: ownerId, ownerName: ownerName, dropboxName: accountInfo.name }); }); };
exports.fb_mlogin = function (token, done) { graph.setAccessToken(token); graph.get("me", function (err, res) { if (err) { logger.error('err', err); done(err) } else { logger.debug('me', res); var memberId = res.id; var memberEmail = res.email; if (res.gender == 'male') { var gender = 1; var memberOption = 1; } else { var gender = 2; var memberOption = 2; } var memberName = res.name; var datas = [memberId, gender, memberName, memberOption, memberEmail]; logger.debug('res', res); done(null, datas) } }); }
app.post('/rest/add/article', function (req, res){ var http = require('http'); var post = req.body; var Firebase = require('firebase'); var myRootRef = new Firebase('https://rentie.firebaseio.com/article'); myRootRef.push(post); var wallPost = { message: "Fire Notice at "+ post.location }; graph.get("/oauth/access_token?client_id=CLIENT_ID&client_secret=SECRET_KEY&grant_type=client_credentials", function(err, res){ console.log(res) // graph.setAccessToken(res.access_token) // graph.get("/131613223561516", function(err, res) { // console.log(res) // }); graph.post("/me/feed", wallPost, function(err, ress) { console.log(ress.data) }); graph.get("/me/accounts", function(err, ress) { console.log(ress.data) graph.post("/804124363028186/feed?access_token="+ress.data[0].access_token, wallPost, function(err, res) { console.log(res) response.redirect('http://localhost:3100/#/home'); }); }); }) res.redirect('http://localhost:3100/#/home'); });
function(callback) { graph.get(req.params.page_name , function(err ,res) { callback(null,res.id); }); },
}, function(err, friend) { friends.push(friend); cb(err); // fill in missing data if (friend._artists.facebook.length == 0) { fbgraph.get(friend.fbid + '/music', function(err, res) { if (res.data.length > 0) { var artists = []; async.each(res.data, function(artist, cb) { Artist.modcreate(artist.name, { name: artist.name, fbid: artist.id }, function(err, artist) { artists.push(artist._id); cb(err); }); }, function(err) { friend._artists.facebook = artists; friend.save(function(err, n) {}) }); } }); } });
exports.view = function(req, res) { var data = { }; data.facebook_auth = req.session.facebook; data.twitter_auth = req.session.twitter; if(typeof req.session.fbconfig != 'undefined'){ graph.setAccessToken(req.session.fbconfig.access_token); graph.get("me/posts?fields=message", function(err, gres){ data.messages = gres.data; console.log(gres); res.render('myitems', data); }); }else{ console.log('req.session.fbconfig is undefined'); if(typeof req.session.twitconfig != 'undefined'){ var T = new Twit({ consumer_key: req.session.twitconfig.consumer_key, consumer_secret: req.session.twitconfig.consumer_secret, access_token: req.session.twitconfig.access_token, access_token_secret: req.session.twitconfig.access_token_secret }); T.get('statuses/user_timeline', function(err, reply){ console.log(reply); data.tweets = reply; res.render('myitems', data); }); }else{ console.log('req.session.twitconfig is undefined'); res.render('myitems', data); } } }
exports.writeFbData = function (req, res) { graph.get("/me/statuses?limit=15", function(err, result) { var statusArr = result.data.reverse(); //reversed to put in intuitive time order var outputString = "status\tlikes\tdate\n"; var statuses = []; for(var i = 0; i<statusArr.length; i++) { if(statusArr[i].likes) { outputString = outputString + statusArr[i].id + "\t" + statusArr[i].likes.data.length + "\t" + statusArr[i].updated_time.split("T")[0] + "\n"; } else { outputString = outputString + statusArr[i].id + "\t0" + "\t" + statusArr[i].updated_time.split("T")[0] + "\n"; } statuses[i] = statusArr[i].message; } fs.writeFile('./public/data.tsv', outputString, function (err) { if (err) return console.log(err); //console.log(outputString + ' > data.tsv'); res.render("index", {'showGraph': true, 'statuses': statuses, 'name': result.data[0].from.name}); }); } ); }
graph.get(req.user.facebook + '/friends', function(err, friends) { var randomNo = Math.floor((Math.random() * friends.data.length) + 1); var selectedFriend = friends.data[randomNo]; graph.get(selectedFriend.id, function(err, personData) { if (err) return next(err); if (personData.birthday == null || personData.education == null || personData.hometown == null || personData.gender == null || personData.location == null) { res.redirect('/guesswho'); } res.render('guesswho', { title: 'Guess Who', mysteryName: personData.name, mysteryBirthday: personData.birthday, mysteryEducation: personData.education[0], mysteryHometown: personData.hometown, mysteryLocation: personData.location, mysteryGender: personData.gender }); }); });
exports.fbuser = function(req, res){ graph.get("/me", function(err, res1) { //console.log(res1); res.render('fblogin', res1); }); }
var getPosts = function(err, result) { count++ //request to fb api takes longer than 30 secs which times out on free Heroku for count > 20 if(result.paging && result.paging.previous && count<300) { // console.log('calling me', result.paging.previous) graph.get(result.paging.next, function(err, result){ // console.log('inside recursive grah.get', result); if(err) { console.log('err', err); } else { posts = posts.concat(result.data); console.log('total posts', posts.length); // console.log('paging inside recursive graph',result); getPosts(err, result); } }) } else { // console.log('exiting', count); console.log('total posts exiting', posts.length); res.send(posts); // console.log(posts); writeFBCSV(posts); return } };
app.get('/rest/profile', ensureAuth, function(req, response){ var data = ""; graph .get("/me", function(err, res) { response.send(res) }); });
app.post('/nominees', function(request,response){ if(request.user == null){ response.status(400).send("Error: Not Authorized"); } else { var uid = parseInt(request.body.uid); if(isNaN(uid) == true){ response.status(400).send("Error: Invalid UID"); } else{ var uidUrl = "/" + request.body.uid + "?fields=name"; //console.log(request); graph.get(uidUrl, {access_token : request.user.accessToken} ,function(err, res) { //console.log("\n\n\nResponse: " + res + "\n\n\n"); var nomineeParam = {}; nomineeParam[res.name] = { uid: uid, CScore : 0, VScore: 0, TScore: 0, SScore: 0, Total: 0, pitch: "", profilePicture: "" }; nomineesRef.update(nomineeParam); response.send("Added Candidate"); // { id: '4', name: 'Mark Zuckerberg'... } }); } } })
}, function (err, facebookRes) { // res.redirect('/UserHasLoggedIn'); function errResp(e, r) { if (e) { console.log(e); } else { console.log(r); } } var params = { fields: 'id, name, first_name, middle_name, last_name, gender, locale, languages, link,' + 'username, age_range, third_party_id, installed, timezone, updated_time,' + 'verified, bio, birthday, cover, currency, devices, education, email, hometown,' + 'interested_in, location, political, payment_pricepoints, favorite_athletes,' + 'favorite_teams, picture, quotes, relationship_status, religion, security_settings,' + 'significant_other, video_upload_limits, website, work' }; graph.get("me", params, function(err, resp) { // errResp(err, resp); var query = { 'user.first_name': resp.first_name } User.findOneAndUpdate(query, { user: resp, date: new Date() }, function (er, usr) { if (!usr) { var user = new User ({ user: resp }); user.save(function(err) { if (err) console.log(err); }); } res.redirect('/') }) });; });
function calculateDiffs(req, res, callback) { var diffs = {}; graph.setAccessToken(config.secrets.facebook.clientID + '|' + config.secrets.facebook.secret); /* okay, now we have set it, grab the list of events from facebook */ graph.get("ruffstart/events", function(err, facebookRes) { if (err) { handleError(res); } else { var facebookEvents = facebookRes.data; /* We now have our facebook events. Match them to the events in eventbrite */ rest.get( 'www.eventbriteapi.com', '/v3/users/me/owned_events/', config.secrets.eventbrite.key, {status:'live',order_by:'start_asc'}, function(data) { /* Patch eventbrite events so the fields are the same names */ createDiffDictionary(facebookEvents, patchEventbriteEvents(data.events), callback); }); } /* Used to check against mongo, but should instead check against eventbrite Event.findAsync() .then(function (mongoEvents) { createDiffDictionary(facebookEvents, mongoEvents, callback); }) .catch(handleError(res)); */ }); }
}, function (err, facebookRes) { if (facebookRes.access_token) { var hashed_token = crypto.createHash('md5').update(facebookRes.access_token).digest("hex"); graph.get('me', function(err, data) { if (data) { var user = { hash: hashed_token, access_token: facebookRes.access_token, email: data.email, name: data.name, link: data.link }; db_users.set(hashed_token, JSON.stringify(user)); req.session.user = user; db_friends.get("generating:" + user.hash, function(err, reply) { if (!reply) { db_friends.del(user.hash); resque.enqueue('fb', 'generate', [user.hash]); db_friends.set("generating:" + user.hash, true); } }); res.redirect('/friends'); return; } else { res.redirect('/'); return; } }); } });
app.get('/UserHasLoggedIn', function(req, res) { Facebook.get('me', function(err, response) { //console.log(err); //if there is an error this will return a value data = { facebookData: response}; res.render('facebookaccount', data); }); });
exports.friendly = function(req, res) { var token = _.find(req.user.tokens, { kind: 'facebook' }); graph.setAccessToken(token.accessToken); graph.get(req.user.facebook + '/friends', function(err, friends) { /* get 2 different random numbers */ var r1 = Math.floor((Math.random() * friends.data.length)); var r2 = Math.floor((Math.random() * friends.data.length)); if (r1 == r2) { r1 = Math.floor((Math.random() * friends.data.length)); } graph.get(friends.data[r1].id + '/friends/' + friends.data[r2].id, function(err, resp) { var result = ''; if (resp.data.length == 0) { result = 'no'; } else { result = 'yes'; } res.render('friendly', { title: 'Friendly', opt: result, f1: friends.data[r1].name, f2: friends.data[r2].name }); }); }); };
app.post('/run', checkFbSession, function(req, res, next) { console.log("Saving new Run for " + req.session.fb.user_id + "..."); // Retrieve the currently logged in user details from Facebook graph.get("/me", function(err, user) { if (err) { handleError('Could not retrieve user info', user, req, res); return; } // Construct a new Run using the post data var run = new Run({ friends: req.body.friends, location: req.body.location || 'Unknown Location', date: new Date, distance: req.body.distance, profileId: user.id, name: user.first_name + ' ' + user.last_name }); // Save the run to the database run.save(function(err) { if (err) { handleError('Could not save run', err, req, res); return; } console.log("Successfully saved new run"); res.json({ success: true }); }); }); });
graph.get('/me', { fields: 'name,first_name,last_name,id' }, function(err, res) { user_details = res; graph.get('/me/music', {}, function(err, firstMusicRes) { musicPages = firstMusicRes.data; var paging = firstMusicRes.paging; var i = 0; while(paging && paging.next) { graph.get(paging.next, function(err, res) { paging = res.paging; musicPages.concat(res.data); }); i += 1; } // create user var User = Parse.Object.extend("XUser"); var user; var user_query = new Parse.Query(User); user_query.equalTo("name", user_details.name); user_query.find({success: function(found) { user = found[0]; console.log('user after query is '+JSON.stringify(found)); if(!user) { console.log('undefined'); user = new User(); var custom_acl = new Parse.ACL(); custom_acl.setPublicWriteAccess(true); custom_acl.setPublicReadAccess(true); user.setACL(custom_acl); user.set('name', user_details.name); user.set('first_name', user_details.first_name); user.set('last_name', user_details.last_name); user.set('fbid', user_details['id']); user.set('music', musicPages); user.save({}, { success: function(user) { // Execute any logic that should take place after the object is saved. console.log('New object created with objectId: ' + user.id); }, error: function(user, error) { // Execute any logic that should take place if the save fails. // error is a Parse.Error with an error code and message. console.log('Failed to create new object, with error code: ' + error.message); } }); } response.redirect('/comfort.html'); }}); }); });
var me=function (token,cb) { var data=fbgraph.get('/me/?access_token='+token,function (err,data) { // console.log(err); // console.log(data); cb(err,data) //console.log(new Date().getFullYear()-data.birthday.split('/')[2]) }) }
app.get('/UserHasLoggedIn', function(req, res) { //res.render("index", { title: "Logged In" }); //res.render('index', { attr: 'hull world' }); graph.get('/me/feed', function(err,res2) { //res.send(res2); // sends text response to browser res.render('index', { msg: "Analyzing your most recent Facebook post...", recent: res2.data[0].story, compliment: "Super cool post!" }); //console.log(res2.data[0].story); }) });