post: function(account, twist, callback) { // Set token var result = { aid: account._id, provider: 'facebook', name: account.name } if (!setToken(account)) { // Error on token result.error = "Invalid token"; callback(result); return; } // Post status update to Facebook var post = { link: twist.url, message: twist.text ? twist.text + ' ' : '' }; if (twist.author) { post.message += ' ('+twist.author+')'; } if (twist.image) { post.picture = twist.image; } facebook.api('me/feed', 'post', post, function (res) { if (!res || res.error) { result.error = res.error.code + ": " + res.error.message; } else { result.id = res.id; } callback(result); }); },
get: function(account, twist, callback) { // Set token var result = { aid: account._id, provider: 'facebook', name: account.name } if (!setToken(account)) { // Error on token result.error = "Invalid token"; callback(result); return; } // Get status facebook.api(twist.id, 'get', {fields: "message,link"}, function (res) { if (!res || res.error) { result.error = res.error.code + ": " + res.error.message; } else { result.url = res.link; result.text = res.message; } callback(result); }); },
module.exports.init = async () => { try { console.log('>>>> config/init/facebook >>>>'); FB.setAccessToken(sails.config.facebook.accessToken); FB.api( "/"+sails.config.facebook.pageId+"/feed?fields=full_picture,name,message,story,description,type,link", //?fields=full_picture,name,message,story,description,type function (response) { // console.log(response); if (response && !response.error) { response.data.forEach(function(feed){ Feed.create({ fullPicture: feed.full_picture, name: feed.name, message: feed.message, story: feed.story, description: feed.description, type: feed.type, link: feed.link, createdAt: feed.created_time, sourceId: feed.id, }); }); } } ); } catch (e) { console.error(e); } };
function exchangeToken(userId, shortToken, callback){ var clientId = null, clientSecret = null; if(!process.env.FB_CLIENT_ID || !process.env.FB_CLIENT_SECRET){ var config = require('../config/config'); clientId = config.fb.clientId; clientSecret = config.fb.clientSecret; } else{ clientId = process.env.FB_CLIENT_ID; clientSecret = process.env.FB_CLIENT_SECRET; } FB.api('oauth/access_token', { client_id: clientId, client_secret: clientSecret, grant_type: 'fb_exchange_token', fb_exchange_token: shortToken }, function (res) { if(!res || res.error) { var resErr = !res ? 'FB error occurred' : res.error; callback(resErr) } else{ var accessToken = res.access_token; var expires = res.expires ? res.expires : 0; callback(null, accessToken, expires); } }); };
function renewUserAccessToken() { function handleRenewed(res) { if (!res || res.error) { logger.log('error', !res ? 'error occurred' : res.error); return; } longLiveAccessToken = res.access_token; var nSpan = res.expires ? res.expires : 0; logger.log('info', 'long user at: ' + longLiveAccessToken); accessTokenExpiration = Number.MAX_VALUE; logger.log('info', 'expiration at: ' + accessTokenExpiration); saveOwnerLongAccessToken({ user_at : longLiveAccessToken, end : accessTokenExpiration }); queryFanPageToken(); } logger.log('info', 'calling FB for renew user access token'); FB.api('oauth/access_token', { 'client_id' : fbOptions.clientID, 'client_secret' : fbOptions.clientSecret, 'redirect_uri' : fbOptions.redirectURI, 'grant_type' : 'fb_exchange_token', 'fb_exchange_token' : userAccessToken }, handleRenewed); }
app.get('/handle_facebook_callback', function (req, response) { console.log(req.query, " RIKI") fbAccessToken = req.query.access_token; FB.setAccessToken(fbAccessToken); FB.api('me', function (res) { if(!res || res.error) { console.log(!res ? 'error occurred' : res.error); return; } fbId=res.id; fbName=res.name; connection.connect(); //var title = "I am "+fbName+ " and my president is"+president var post = {uid:2147483647}; var query = connection.query('SELECT * from fb_profile WHERE ?', post, function(err, result) { console.log(err) //console.log(result[0].uid, " result.uid"); if(result.length){ response.redirect('/user?id='+result[0].uid); }else{ response.redirect('/duterte'); } }); // template=Handlebars.compile(fs.readFileSync(candidates[0],'utf8')); // response.send(200,template({title:title,fid:fbId,president:'Duterte'})); }); })
router.post('/respondToSms', function(req, res) { //Validate that this request really came from Twilio... if (twilio.validateExpressRequest(req, '7580cfb76678516499711f7ceb9aaf7a')) { FB.setAccessToken('CAAG1dr42JNwBAGVmjCJblVgZCQVRDvM8zBcTTOSoLfDno5cD1pPQxQbZBsZAqnuGaCKr0F31QW1SXlELetxFEDu9Ch0kCj6OrpB9bHrTIX0LZBUSOLpu61o7OFqaV6bw2mmAZBMhyJDwp4sNbVaczOZA0ZCg1LrqaqhZC6mWSRdLo4YYGWrtjhKD'); FB.api( "/1414766195467290/photos", "POST", { "url": "http://rubberducknfk.com/images/front.jpg", "place": "8070729884", "message": "I just took someone's picture! Get yours by texting (920) 75DUCKY! #chryslerquack " }, function (response) { var twiml = new twilio.TwimlResponse(); twiml.sms('Thanks for texting the Rubber Duck! We just posted a picture from the webcam to our facbook photos! Tag yourself at ' + 'https://www.facebook.com/photo.php?fbid=' + response.id); res.type('text/xml'); res.send(twiml.toString()); }); } else { res.send('you are not twilio. Buzz off.'); } });
User.findOne({facebookId:profile.id}, function(err, user) { if(err) return done(err); if(!user) user = new User({facebookId: profile.id}); user.name = profile.displayName; user.accessToken = accessToken; FB.setAccessToken(accessToken); FB.api(profile.id, {fields:['picture', 'friends']}, function(response){ var friends = []; response.friends.data.forEach(function(f){ friends.push(f.id); }); user.profileUrl = response.picture.data.url; user.friends = friends; user.save(function(err){ return done(err, user); }); }); });
exports.postfacebook = function(obj,callback){ FB.setAccessToken(obj.fb_token); FB.api('me', { fields: ['id', 'name'] }, function (res) { //페이스북 로그인 if(!res || res.error) { logger.warn(!res ? 'error occurred' : res.error); callback(0,statusFail); }else{ var fb_id = res.id; UserModel.findOne({'fb_id': fb_id}, function(err, docs){ if(err) callback(0,{error:'db error membermodel facebooklogin'}); if(!docs){ // 로그인한 적 없는 페이스북 아이디라면 // 아이디 등록 후 callback(2, {"fb_id" : fb_id}); // counterModel.findOneAndUpdate({_id:'userId'},{$inc: {seq : 1}},{upsert:true, new:true},function(err,pre_doc){ // obj._id = pre_doc.seq; // obj.name = res.name; //이름추가 // obj.save(function(err,docs){ // if(err) return callback(0,err); // callback(2, docs); // }) // }); }else{ callback(1,docs); } }); } }); };
function getEachHD(post, callback) { if (!post || !post.object_id) { results.push({ message: post.message, datemade: new Date(post.created_time), provider: 'facebook' }); callback(); } else { FB.api(post.object_id, function(data) { if (!data || data.error) { console.log('hey there it did not work'); callback(); } else { results.push({ message: data.name, image: data.images[0].source, datemade: new Date(data.created_time), provider: 'facebook' }); callback(); } }) } }
this.readSource = function(callback) { FB.api('/' + self.pageId + '/posts', self.parameters(), function(result) { if(result.error) { callback.call({parent: self}, {contents: null, cursor:null}, result.error); return; } result.data = result.data.filter(function(item) { return 'message' in item; }); result.data.forEach(function(item) { if(!('comments' in item)) return item item = Object.merge(item, {commentCursor: Object.merge(item.comments.paging, Collector.cursorInfo('created_time', item.comments.data))}); item.author = {name: item.from.name, id: item.from.id}; item.body = Object.clone(item.message); item.message = undefined; }); forwardParameters = result['paging'] ? Collector.queryParameters(result['paging']['previous']) : {}; backwardParameters = result['paging'] ? Collector.queryParameters(result['paging']['next']) : {}; Collector.normalizeContents(result.data, {dateColumn: 'created_time', orderIdColumn: 'created_time'}); var oldLength = result.data.length; if(oldLength > 0) { var oldestItem = result.data[result.data.length - 1].orderId; result.data = Collector.filterContentsByDate(result.data, self.cursor.direction, self.cursor); console.log(oldLength - result.data.length + " item filtered of "+ oldLength +" items."); } callback.call({parent: self}, {contents: result.data, cursor: Object.merge({forward: forwardParameters, backward: backwardParameters}, Collector.cursorInfo(self.positionColumn, result.data))}); }) }
module.exports.get('/login/:access_token', (request, user_response) => { // TODO this is a long chain of callbacks which will have a large latency. FB.api('oauth/access_token', { client_id: facebook_app_id, client_secret: facebook_api_secret, grant_type: 'client_credentials' }, function (response) { if(!response || response.error) { console.log(!response ? 'error occurred' : response.error); return; } var app_facebook_access_token = response.access_token; FB.api('/debug_token', { input_token: request.params.access_token, access_token: app_facebook_access_token }, function(response) { if(!response || response.error) { console.log(!response ? 'error occurred' : response.error); return; } console.log(response); if (response.data.app_id == facebook_app_id && response.data.is_valid) { if (priv_check(response.data.user_id)) { request.session.priv = true; } request.session.access_token = request.params.access_token } }); }); });
FB.api('me', {fields: ['id', 'name'], access_token: facebookUserToken}, function(user) { if (!user || user.error) { callback(null, 'Facebook auth. token error, token is not valid!'); functions.log(messagePrefix + 'FB token error, token is not valid!'); return; } //FB user token is valid, now get the facebook application id to differentiate FB.api('app', {fields: ['id', 'name'], access_token: facebookUserToken}, function(app) { if (!app || app.error) { callback(null, 'Facebook auth. token error - cannot get FB app ID!'); functions.log(messagePrefix + 'FB token error - cannot get FB app ID'); return; } /* If token is sucesfully checked set the FB user id and FB app id into prepared variables */ facebookUserId = user.id; facebookAppId = app.id; //print log message functions.log(messagePrefix + 'has been authenticated as [FB app id: ' +facebookAppId + ', FB user id:' + facebookUserId + ', full name: ' + user.name + ']'); //join this socket connection to the room for token checked clients socket.join('token-checked'); //change message preffix messagePrefix = messagePrefix + facebookAppId + ' - ' + facebookUserId + ' >> '; //call callback with true (user is sucesfully authenticated to server) callback(true); }); });
exports.fbfriends = function(user, cb) { console.log('USER:'******'user Token:',acct); FB.api('me/friends', function(res) { if (!res || res.error) { console.log('user foundYYY'); cb('No data Received'); } else { var tempArr = []; console.log('user foundXXX'); async.each(res.data, function(obj, callback) { User.findOne({facebookId: obj.id}, '_id profile', function(err, user) { if (err) { callback(); } else if (!user) { callback(); } else { tempArr.push(user); callback(); } }); }, function(err) { if (err) { cb(err); } cb(null, tempArr); }); } }); };
exports.facebookLogin = function(req, res) { FB.api('/me', { fields: ['id', 'first_name', 'last_name', 'email', 'picture.type(large)'], access_token: req.body.facebookToken }, function (response) { if(response && response.error) { if(response.error.code === 'ETIMEDOUT') { console.log('request timeout'); res.json(408, "Request timeout"); } else { console.log('error', response.error); res.json(401, "Unauthorized"); } } else { User.updateOrCreateWithFbProfile(response, req.body.facebookToken, function(err, user) { if (err) { console.log(err); res.json(err.http_code, {error: err.message}); return; } generateSessionToken(user, function(err) { // Something wrong with the database if (err) { res.send(500); return; } res.json(200, {user: user, credentials: {accessToken: user.accessToken}}); }); }); } }); };
function setFacebookFullname(options, facebook_access_token, user_id) { var args = { access_token: facebook_access_token }; if (options.facebook_api_locale) { args.locale = options.facebook_api_locale; } FB.api('/me', args, function(res) { if (res && res.name) { mongodb_manager.getCollection('user', function(err, collection) { if (err) return console.log('unable to get the user collection.', err); collection.update({ _id: user_id }, { $set: { fullname: res.name } }, { w: 1 }, function(err) { if (err) return console.log('failed to set facebook fullname.', err); //no callback }); }); } }); }
connection.query(query, params, function (error, results, fields){ if(error) throw error; // Populate Session request.session.token = data.access_token; request.session.expires = data.expires; var params = { access_token: data.access_token }; // Get user location FB.api('me', params, function (data){ request.session.location = data.location.name; // Return user session var session = JSON.stringify({ user_id : request.session.facebookid, access_token : request.session.token, expires_at : request.session.expires, user_location : request.session.location }); response.writeHead(200, {'Content-Type': 'application/json'}); response.write(session, 'utf-8'); response.end(); }); });
}, function (fbRes) { if(!fbRes || fbRes.error) { console.log(!fbRes ? 'error occurred' : fbRes.error); return; } let accessToken = fbRes.access_token; let expires = fbRes.expires ? fbRes.expires : 0; FB.setAccessToken(accessToken); FB.api('/me', { fields: ['id', 'name', 'email'] }, (jsonUser) => { if (jsonUser && jsonUser.error) { if(jsonUser.error.code === 'ETIMEDOUT') { console.log('request timeout'); res.status(500).send('request timeout'); } console.log('error', res.error); res.status(500).send(res.error); } var users = new TableUser(); users .login(`facebook-${jsonUser.id}`, jsonUser.name) .then((azureUser) => { res.status(200).send(popupTools.popupResponse({user: azureUser})) }) }); });
data.results.forEach(function(d) { FB.setAccessToken(d.Token); FB.api('fql', { q: 'SELECT actor_id, message FROM stream WHERE app_id = 419704494719974 and source_id = me() ' }, function (res) { if(!res || res.error) { console.log(res.error); return; }else{ res.data.forEach(function(item,index,array) { FB.api('fql', { q: 'SELECT pic_small,name FROM user WHERE uid='+item.actor_id }, function (res) { if(!res || res.error) { console.log('ll'+res.error); return; }else{ data_feed[i]={"name" : res.data[0].name, "pic_small" : res.data[0].pic_small, "message" : item.message }; i++; if(index+1==array.length){ everyone.now.streamFeed(data_feed); return; } //console.log(data_feed); } }); }); } }); });
function uploadFB(album,image,page,cb) { console.log('UPLOADING FB'+image) if(image === '' || image === null) { console.log('empty') cb(null,null); } try{ var imgURL="http://webshoty.com/"+image;//change with your external photo url FB.api('/'+page.id+'/photos', 'post', { url:imgURL, access_token:page.token }, function(response){ console.log(response) cb(null,image) }); }catch(e) { console.log(e) console.log('HERE') cb(null,image) // self.res.send({type:'success',response:regularOutput}); } }
}, function (response) { if(!response || response.error) { console.log(!response ? 'error occurred' : response.error); return; } var app_facebook_access_token = response.access_token; FB.api('/debug_token', { input_token: request.params.access_token, access_token: app_facebook_access_token }, function(response) { if(!response || response.error) { console.log(!response ? 'error occurred' : response.error); return; } console.log(response); if (response.data.app_id == facebook_app_id && response.data.is_valid) { if (priv_check(response.data.user_id)) { request.session.priv = true; } request.session.access_token = request.params.access_token } }); });
function getWallFeeds(feedLink, args, response) { FB.api(feedLink, 'get', args, function (res) { if (!res || res.error) { console.log(!res ? 'error occurred' : res.error); getAccessToken(); } //console.log(res.data); processMessage(res.data); //response.send(res.data); var nextLinkParts = url.parse(res.paging.next, true); //console.log(nextLinkParts); var args = { limit: nextLinkParts.query.limit, until: nextLinkParts.query.until, access_token: nextLinkParts.query.access_token }; getWallFeeds(feedLink, args, response); }); }
function (err, result) { if(err) return next(err); req.session.access_token = result.access_token; req.session.expires = result.expires || 0; if(req.query.state) { var parameters = JSON.parse(req.query.state); console.log('MATT log parameters---> '+parameters); parameters.access_token = req.session.access_token; // FB.api('/me/feed', 'post', { message : 'Hello Megan'}, function(result){ FB.api('/me/' + config.facebook.appNamespace +':eat', 'post', parameters , function (result) { console.log(result); if(!result || result.error) { return res.send(500, result || 'error'); // return res.send(500, 'error'); } return res.redirect('/'); }); } else { console.log('MATT log access_token---> '+req.session.access_token); console.log('MATT log expires---> '+req.session.expires); FB.ui({ method: 'share', href: 'https://developers.facebook.com/docs/', }, function(response){}); // save the access_token //res.json({authResponse : req.session.access_token}); return res.redirect('/'); } }
router.get('/profile', isAuthenticated, function(req, res) { var token = req.user.token; FB.api('me/feed', {access_token: token }, function(results) { console.log(results); res.render('profile', {user:req.user, feed:results.data} ); }); });
function getOauthToken(clientID,clientSecret,clientCredentials,callback) { FB.api('oauth/access_token',{client_id:clientID,client_secret:clientSecret,grant_type:clientCredentials},function(res) { // test if !res or res.error in callback callback(res.access_token); }); }
results.forEach(function(match) { FB.api(match.uidM + '/mutualfriends/' + match.uidF, function(res) { match_collection.update( { _id: match._id }, { $addToSet: {mutualFriends: { $each: res.data }}}, { multi: false, w: 0} ); }) });
return new Promise((resolve, reject) => { FB.api('me', options, (response) => { if(response.error) { return reject(response.error); } resolve(response); }); });
router.get('/api/albums', (req, res) => { FB.api( '/me?fields=albums.fields(id,name,cover_photo,photos.fields(name,picture,source, likes))', 'GET', function (response) { response.error ? res.json(response): res.json(response.albums.data) // Hanlde the response if user authenticated or not. } ) })
Facebook.prototype.get = function() { fb.api('music.listens', function (res) { if(!res || res.error) { console.log(!res ? 'error occurred' : res.error); return; } console.log(res); }); };
var fbQuery = function(req, res){ var query = req.params.query; var token = req.session.passport.user.token; FB.api(query,{ access_token: token }, function(fbres){ res.json(fbres); }); };