I get error FB not defined when using Facebook Javascript SDK

FB.init({
    appId: '{APP ID}',
    status: true,
    cookie: true,
    xfbml: true
});

Jsfiddle

有帮助吗?

解决方案

Two things-

  1. I can't see the JS SDK been loaded.

  2. You have to call your FB functions after the SDK is loaded asynchronously, else it will throw that FB is not defined

So, to fix it-

// This will be triggered automatically after the SDK is loaded successfully
// write your FB fucntions inside this
window.fbAsyncInit = function() {
   FB.init({
     appId: '{app-id}',
     status: true,
     cookie: true,
     xfbml: true
   });

   FB.getLoginStatus(function (response) {
     if (response.status === 'connected') {
        GetData();
     } else {
        Login();
     }
  });
};

// JS SDK - this will be loaded asynchronously
(function(d, s, id){
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

function Login() {
   ...
   ...
}

function GetData() {
   ...
   ...
}

Reference

Edit:

I saw that you are requesting for the permission email and yet not using it. Use the actual email (not the facebook one) with- response.email

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top