Вы должны быть уверены, что фреймворк загружен перед вызовом или присоединением FB. * К любым обработчикам JavaScript.
Вы можете убедиться, что сделали это в нужное время, поместив вложение в обработчики внутри window.fbAsyncInit=function(){};
Кроме того, ваш первый пример верен, вы хотите убедиться, чтоподключен / вошел в систему до слепого вызова функций FB.api(
или FB.ui(
.