Skip to content

Instantly share code, notes, and snippets.

@flovilmart
Created February 9, 2014 22:01
Show Gist options
  • Save flovilmart/8906653 to your computer and use it in GitHub Desktop.
Save flovilmart/8906653 to your computer and use it in GitHub Desktop.
Parse / Facebook wrapper
var FacebookAPI = function(app_id, app_secret) {
return {
auth_url : "https://graph.facebook.com/oauth/access_token?"+
"client_id=" + app_id +
"&client_secret=" + app_secret +
"&grant_type=client_credentials",
setAppToken: function(app_token){
this.app_token = app_token;
},
authorizeUser: function(user){
var self = this;
if (!user.get("authData") || !user.get("authData").facebook) {
return Parse.Promise.error("This account is not connected with Facebook");
}else{
self.access_token = user.get("authData").facebook.access_token;
return Parse.Promise.as(self);
}
},
authApp: function(callback){
var self = this;
return Parse.Cloud.httpRequest({
url: self.auth_url,
method: "GET",
}).then(function(httpResponse){
self.app_token = httpResponse.text.split("=")[1];
return Parse.Promise.as();
}, Parse.Promise.error);
},
app_token: undefined,
user_id: undefined,
access_token: undefined,
get: function(path, params, callback){
var url = "https://graph.facebook.com"+path;
if (params === undefined) {
params = {};
}
if (this.access_token) {
params.access_token = this.access_token;
}else if(this.app_token){
params.access_token = this.app_token;
}
var request_options = {
url: url,
params: params,
method: "GET"
};
return Parse.Cloud.httpRequest(request_options).then(function(httpResponse){
var rsp = JSON.parse(httpResponse.text);
if (callback) {
callback(rsp);
}
return Parse.Promise.as(rsp);
}, function(httpResponse){
var err = JSON.parse(httpResponse.text);
if (callback) {
callback(err);
}
return Parse.Promise.error(err)
});
},
post: function (path, params, body, callback){
var url = "https://graph.facebook.com"+path;
if (params === undefined) {
params = {};
}
if (this.access_token) {
params.access_token = this.access_token;
}else if(this.app_token){
params.access_token = this.app_token;
}
if (body === undefined) {
body = {};
}
var request_options = {
url: url,
params: params,
body: body,
method: "POST"
};
return Parse.Cloud.httpRequest(request_options).then(function(httpResponse){
var rsp = JSON.parse(httpResponse.text);
if (callback) {
callback(rsp);
}
return Parse.Promise.as(rsp);
}, function(httpResponse){
var err = JSON.parse(httpResponse.text);
if (callback) {
callback(err);
}
return Parse.Promise.error(err)
});
}
};
};
module.exports = FacebookAPI;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment