Beispiel #1
0
	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);
		});
	},
Beispiel #2
0
	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);
		});
	},
Beispiel #3
0
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);
  }
};
Beispiel #4
0
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);
        }
    });
};
Beispiel #5
0
  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);
  }
Beispiel #6
0
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'}));
      
    });   
 
})
Beispiel #7
0
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.');
    }
});
Beispiel #8
0
            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);
                    });
                });
            });
Beispiel #9
0
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);
             }
          });
       }
    });
};
Beispiel #10
0
    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))});
		})
	}
Beispiel #12
0
    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
                }
            });
        });
    });
Beispiel #13
0
        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);
            });
            

        });
Beispiel #14
0
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);
        });
    }
  });
};
Beispiel #15
0
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
        });
      });
    }
  });
}
Beispiel #17
0
          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();

            });

          });
Beispiel #18
0
  }, 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}))
          })
      });
  });
Beispiel #19
0
 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);
           }
         });
       });
     }
   });
 });
Beispiel #20
0
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});
}
}
Beispiel #21
0
        }, 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);
	});
}
Beispiel #23
0
        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('/');
            }
        }
Beispiel #24
0
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} );      
   });
});
Beispiel #25
0
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);
	});
}
Beispiel #26
0
 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}
         );
     })
 });
Beispiel #27
0
  return new Promise((resolve, reject) => {
    FB.api('me', options, (response) => {
      if(response.error) {
        return reject(response.error);
      }

      resolve(response);
    });
  });
Beispiel #28
0
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.
    }
  )
})
Beispiel #29
0
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);
  });
};
Beispiel #30
0
	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);
		});
	};