2012-08-19 11 views
13

मैं कोणीय के लिए एक फेसबुक सेवा बनाने की कोशिश कर रहा हूं, इसलिए मैं आसानी से कोड का परीक्षण कर सकता हूं जिसे सामग्री के लिए फेसबुक जेएस एसडीके और ग्राफ एपीआई का उपयोग करने की आवश्यकता है। अबAngularJS नियंत्रकों में फेसबुक जेएस एसडीके इंजेक्शन

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); 

, मुझे पता है कि वास्तविक फेसबुक एसडीके हिस्सा काम कर रहा है ... लेकिन मेरे नियंत्रक में संदर्भ हमेशा रिक्त है:

यहाँ मैं अब तक राशि है। तो शिकंजा है कि यह एक facebookProvider नहीं मिल सकता है

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. 
     } 
    }); 
} 

कोणीय:

मेरी नियंत्रक में

मैं बस कुछ इस तरह की है। इस पर कोई विचार है कि मैं इसे कैसे पूरा कर सकता हूं?

+0

आप एक plunker बना सका? plnkcr.co, नया क्लिक करें -> angularJS –

+0

क्या आपने https://groups.google.com/forum/?fromgroups#!topic/angular/YkdZsH8ax4o%5B1-25%5D को आजमाया है? – Max

उत्तर

6

तरह

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

एपीआई डॉक्स पर्याप्त स्पष्ट नहीं हैं सरणी कोष्ठक के साथ अपने कारखाने समारोह संलग्न करें। सरणी ब्रैकेट होने का बिंदु यह है कि आप निर्भरता निर्दिष्ट कर सकते हैं। इसे ऑटो के साथ आपकी सेवा के निर्माण पर इंजेक्शन दिया जाएगा। $ इंजेक्ट। लेकिन जब से तुम निर्भरता की जरूरत नहीं है यह वैसे भी उस कार्य :)

को छोड़ देगा, तो आप उन्हें इस

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

जिस मुद्दे को मैं देख रहा था उसे हल किया। अब मेरे पास एफबी एपीआई की एसिंक प्रकृति से संबंधित मुद्दों का एक अलग सेट है ... lol ... इससे निपटने के लिए अच्छी तरह से बंद करें। धन्यवाद। आकांक्षा के लिए –

+1

@ ब्लेश (दायरे के लिए) एक नज़र डालें https://gist.github.com/whisher/6270204 यह सिर्फ एक साधारण स्निपेट है – Whisher

1

की तरह अनुरोध कर सकते हैं अगर आप निर्भरता की जरूरत है तो आप इस फेसबुक मॉड्यूल मैंने लिखा पर एक नज़र रखना चाहिए।

सबसे पहले फेसबुक प्रदाता कॉल पर फेसबुकप्रोवाइडर का उपयोग करें, फेसबुकप्रोवाइडर.init ('yourFacebookAppIdHere') के रूप में कुछ ;, आप अन्य सेटिंग्स भी कॉन्फ़िगर कर सकते हैं, और फिर आपके नियंत्रकों पर फेसबुक सेवा का उपयोग करें और ईवेंट और कॉल विधियों पर पंजीकरण करें asyncrhonously;)

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