facebookOAuth.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const FACEBOOK_OAUTH_TOKEN_URI = "https://graph.facebook.com/v2.9/oauth/access_token"
  2. FACEBOOK_OAUTH_TOKEN_APP = "https://graph.facebook.com/oauth/access_token"
  3. ,FACEBOOK_OAUTH_TOKEN_INFO = "https://graph.facebook.com/debug_token";
  4. const facebookConfig = require('../config.js').login.facebook
  5. ,httpsRequest = require('./httpsRequest.js').httpsRequest
  6. ,httpsPost = require('./httpsRequest.js').httpsPost
  7. ;
  8. function getAppToken(cb) {
  9. httpsRequest(FACEBOOK_OAUTH_TOKEN_APP
  10. +"?client_id=" +facebookConfig.clientId
  11. +"&client_secret=" +facebookConfig.clientSecret
  12. +"&grant_type=client_credentials",
  13. (status, resp) => {
  14. if (status === 200 && resp && resp.access_token) {
  15. cb(resp.access_token);
  16. } else {
  17. cb(null);
  18. }
  19. });
  20. }
  21. function getUserId(code, cb) {
  22. httpsRequest(FACEBOOK_OAUTH_TOKEN_URI
  23. +"?client_id=" +facebookConfig.clientId
  24. +"&client_secret=" +facebookConfig.clientSecret
  25. +"&redirect_uri=" +facebookConfig.redirect_uri
  26. +"&code=" +code,
  27. (status, resp) => {
  28. if (status === 200 && resp && resp.access_token) {
  29. getAppToken((appToken) => {
  30. if (appToken) {
  31. httpsRequest(FACEBOOK_OAUTH_TOKEN_INFO +"?input_token="+resp.access_token +"&access_token=" +appToken,
  32. (status, resp) => {
  33. if (status === 200 && resp && resp.data && resp.data.user_id) {
  34. cb(resp.data.user_id);
  35. } else {
  36. cb(null);
  37. }
  38. });
  39. } else {
  40. cb(null);
  41. }
  42. });
  43. } else {
  44. cb(null);
  45. }
  46. });
  47. }
  48. module.exports.FacebookOAuth = {
  49. getUserId: getUserId
  50. };