我正在为Angular创建一个Facebook服务,所以我可以更容易地测试需要使用Facebook JS SDK和Graph API的代码.
这是我到目前为止
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);
现在,我知道实际的Facebook SDK部分正在运行…但在我的控制器中,引用始终为空.
在我的控制器我只是有这样的东西:
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. } }); }
然后,角色抓住它找不到一个FacebookProvider.有什么想法可以如何实现?
用下面的数组括号括起你的工厂功能
原文链接:https://www.f2er.com/javaschema/281839.htmlapp.factory('facebook',[function() { return FB; }]);
API文档不够清楚.具有数组括号的点是可以指定依赖关系.将使用AUTO.$injection注入您的服务创建.但是由于你没有依赖关系,所以它会跳过这个任务:)
无论如何,如果你需要依赖,你可以这样请求他们
app.factory('facebook',["$log",function($someCrazyLoggerService){ $someCrazyLoggerService.log("I'm Auto Injected crazy Logger"); }]);