2012-08-19 31 views
13

Tôi đang cố gắng tạo một dịch vụ facebook cho Angular để tôi có thể dễ dàng kiểm tra mã cần sử dụng Facebook JS SDK và Graph API cho các công cụ.Tiêm Facebook JS SDK vào Bộ điều khiển AngularJS

Dưới đây là những gì tôi có cho đến nay:

app.factory('facebook', function() { 
    return FB; 
}); 

window.fbAsyncInit = function() { 
    FB.init({ 
     appId: 'SOME_APP_ID_HERE', // App ID 
     status: true, // check login status 
     cookie: true, // enable cookies to allow the server to access the session 
     xfbml: true, // parse XFBML 
     oauth: true 
    }); 
}; 

// Load the SDK Asynchronously 
(function (d) { 
    var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; 
    if (d.getElementById(id)) { return; } 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    ref.parentNode.insertBefore(js, ref); 
})(document); 

Bây giờ, tôi biết rằng phần Facebook SDK thực tế đang làm việc ... nhưng trong điều khiển của tôi tài liệu tham khảo luôn là null.

trong bộ điều khiển của tôi, tôi chỉ có một cái gì đó như thế này:

function FooCtrl($scope, facebook) { 
    facebook.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      var uid = response.authResponse.userID; 
      var accessToken = response.authResponse.accessToken; 
      // do something 
     } else if (response.status === 'not_authorized') { 
      // the user is logged in to Facebook, 
      // but has not authenticated your app 
     } else { 
      // the user isn't logged in to Facebook. 
     } 
    }); 
} 

góc sau đó cứ phàn nàn rằng nó không thể tìm thấy một facebookProvider. Bất kỳ ý tưởng về cách tôi có thể thực hiện điều này?

+0

Bạn có thể tạo một người không? plnkcr.co, nhấp vào mới -> angularJS –

+0

Bạn đã thử https://groups.google.com/forum/?fromgroups#!topic/angular/YkdZsH8ax4o%5B1-25%5D? – Max

Trả lời

6

Kèm theo chức năng máy của bạn với dấu ngoặc mảng như dưới đây

app.factory('facebook', [function() { 
    return FB; 
}]); 

tài liệu API là không đủ rõ ràng. Điểm có các dấu ngoặc mảng là bạn có thể chỉ định các phụ thuộc. Nó sẽ được tiêm vào việc tạo ra dịch vụ của bạn với AUTO. Nhưng kể từ khi bạn không cần phải phụ thuộc nó sẽ bỏ qua nhiệm vụ đó :)

Dù sao, nếu bạn cần phụ thuộc bạn có thể yêu cầu họ như thế này

app.factory('facebook', ["$log", function($someCrazyLoggerService){ 
    $someCrazyLoggerService.log("I'm Auto Injected crazy Logger"); 
}]); 
+0

Điều đó giải quyết được vấn đề tôi đã gặp phải. Bây giờ tôi có một tập hợp các vấn đề khác nhau liên quan đến bản chất không đồng bộ của api FB ... lol ... tốt để đối phó với điều đó. Cảm ơn. –

+1

@blesh for ispiration (cho phạm vi) hãy xem https://gist.github.com/whisher/6270204 nó chỉ là một đoạn trích đơn giản – Whisher

1

bạn nên hãy nhìn vào mô-đun này Facebook tôi đã viết.

Trước tiên sử dụng FacebookProvider trong cuộc gọi cấu hình ứng dụng của bạn, một cái gì đó như FacebookProvider.init ('yourFacebookAppIdHere') ;, bạn cũng có thể cấu hình các cài đặt khác, và sau đó trên bộ điều khiển của bạn sử dụng dịch vụ Facebook và đăng ký các sự kiện và phương thức gọi asyncrhonously;)

https://github.com/ciul/angularjs-facebook

Các vấn đề liên quan