문제

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