Last active
April 2, 2018 02:09
-
-
Save BonsoirDiep/892884e9163ca7709ed9a7c589fe751f to your computer and use it in GitHub Desktop.
Easy Facebook Conversations without Webhook : /graph.facebook.com/v2.12 [step by step]
This file contains hidden or 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
var request = require('request'); | |
var express = require('express'); | |
var app = express(); | |
var session = require('express-session'); | |
var FB_PAGE_ID = '<FB_PAGE_ID>'; | |
var sess = { | |
secret: 'keyboard cat', | |
cookie: {}, | |
resave: true, | |
saveUninitialized: true | |
} | |
if (app.get('env') === 'production') { | |
app.set('trust proxy', 1) // trust first proxy | |
sess.cookie.secure = true // serve secure cookies | |
} | |
var OAuth2 = require('oauth').OAuth2; | |
var oauth2 = new OAuth2("<FB_APP_ID>", | |
"<FB_APP_SECRET>", | |
"", "https://www.facebook.com/dialog/oauth", | |
"https://graph.facebook.com/oauth/access_token", | |
null ); | |
app.use(session(sess)); | |
app.get('/facebook/auth',function (req, res) { | |
var redirect_uri = "http://localhost:3000/facebook/callback"; | |
// For eg. "http://localhost:3000/facebook/callback" | |
var params = {'redirect_uri': redirect_uri, 'scope':'user_about_me,publish_actions,pages_messaging,manage_pages,pages_show_list,read_page_mailboxes '}; | |
var rr = oauth2.getAuthorizeUrl(params); | |
console.log(rr); | |
res.redirect(rr); | |
}); | |
app.get("/facebook/callback", function (req, res) { | |
if (req.error_reason) { | |
return res.send(req.error_reason); | |
} | |
if (req.query.code) { | |
var loginCode = req.query.code; | |
var redirect_uri = 'http://localhost:3000/facebook/callback'; // Path_To_Be_Redirected_to_After_Verification | |
// For eg. "/facebook/callback" | |
var access_token, expires; | |
oauth2.getOAuthAccessToken(loginCode, { grant_type: 'authorization_code', redirect_uri: redirect_uri}, | |
function(err, accessToken, refreshToken, params){ | |
if (err) { | |
console.error(err); | |
return res.send({'err':err.msg}); | |
} | |
access_token = accessToken; | |
expires = params.expires; | |
req.session.access_token = access_token; | |
req.session.expires = expires; | |
return res.send({'access':access_token, 'expires': expires}); | |
} | |
); | |
} | |
}); | |
// get id cua page FB | |
app.get('/page_token', function(req, res) { | |
oauth2.get('https://graph.facebook.com/me/accounts', req.session.access_token, function(err, data ,response) { | |
if (err) { | |
console.error(err); | |
return res.send(err); | |
} else { | |
var x = JSON.parse(data); | |
var b = x.data.filter(e=> e.id==FB_PAGE_ID)[0]; | |
req.session.page_token = b['access_token']; | |
req.session.page_id = b.id; | |
console.log(req.session); | |
return res.send(x); | |
} | |
}); | |
}); | |
// get messages of page: conversations | |
app.get('/page_action', function(req, res) { | |
var url = 'https://graph.facebook.com/v2.12/'+req.session.page_id+'/conversations'; | |
var opts= '\?fields=messages{message,from}'; | |
url+= opts; | |
oauth2.get(url, req.session.page_token, function(err, data ,response) { | |
if (err) { | |
console.error(err); | |
return res.send(err); | |
} else { | |
var profile = JSON.parse(data); | |
return res.send(profile); | |
} | |
}); | |
}); | |
app.get('/all', function(req, res) { | |
return res.send(req.session); | |
}); | |
app.set('port', (process.env.PORT || 3000)); | |
app.listen(app.get('port')); |
Author
BonsoirDiep
commented
Mar 19, 2018
•
- http://localhost:3000/facebook/auth
- code-granting
- redirect callback url: http://localhost:3000/facebook/callback -> generation access_token
- generate page_access_token with access_token: http://localhost:3000/page_token
- read conversations.. http://localhost:3000/page_action
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment