Facebook SDK для JavaScript с AngularJS

Вы можете интегрировать Facebook SDK для JavaScript с AngularJS. Однако наш SDK предназначен для работы в веб-браузере, а не в определенном фреймворке. Поэтому мы не предлагаем модуль AngularJS.

Загрузка Facebook SDK для JavaScript

Инструкции по добавлению Facebook SDK для JavaScript в приложение см. в руководстве по аутентификации Facebook в веб-приложении AngularJS или в других руководствах на сайте https://docs.angularjs.org/guide.

Используйте последнюю версию SDK

Перед выполнением инструкций из руководств убедитесь, что вы загрузили актуальную версию файла SDK sdk.js.

// Old SDK (deprecated)
js.src = "https://connect.facebook.net/en_US/all.js";

// New SDK (v2.x)
js.src = "https://connect.facebook.net/en_US/sdk.js";

Также проверьте, что вы указали актуальную версию API Graph (на сегодняшний день это версия v2.4) в вызове FB.init().

$window.fbAsyncInit = function() {
    FB.init({ 
      appId: '{your-app-id}',
      status: true, 
      cookie: true, 
      xfbml: true,
      version: 'v2.4'
    });
};

Обработка обратных вызовов

Facebook SDK для JavaScript не поддерживает концепцию обещаний. Чтобы устранить эту проблему, вы можете объединить вызовы Facebook SDK для JavaScript в службу.

// ...
.factory('facebookService', function($q) {
    return {
        getMyLastName: function() {
            var deferred = $q.defer();
            FB.api('/me', {
                fields: 'last_name'
            }, function(response) {
                if (!response || response.error) {
                    deferred.reject('Error occured');
                } else {
                    deferred.resolve(response);
                }
            });
            return deferred.promise;
        }
    }
});

Например, можно использовать такую службу:

$scope.getMyLastName = function() {
   facebookService.getMyLastName() 
     .then(function(response) {
       $scope.last_name = response.last_name;
     }
   );
};

Сторонние библиотеки

Сторонние библиотеки упрощают использование Facebook SDK для JavaScript. Список библиотек см. здесь.