Вам не нужно вызывать fb.xfbml.parse самостоятельно, поскольку вы уже инструктируете Facebook init сделать это для вас в fbAsyncInit.Это полезно главным образом в ситуациях, когда вы добавляете новые элементы facebook на страницу после инициализации и хотите, чтобы они были проанализированы и обработаны.
И да, вам следует подождать загрузки библиотеки javascript.Вот что такое fbAsyncInit.Вы создаете элемент script для библиотеки подключений и внедряете его в dom в этой анонимной функции, но браузеру требуется некоторое время для загрузки и оценки кода, поэтому FB не доступен сразу.Когда скрипт загрузится (и объект FB будет доступен), он попытается выполнить window.fbAsyncInit, а затем вы сможете делать все, что вам нужно.