gpt4 book ai didi

dependency-injection - 将 Facebook JS SDK 注入(inject) AngularJS Controller

转载 作者:行者123 更新时间:2023-12-03 23:54:29 26 4
gpt4 key购买 nike

我正在尝试为 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 部分正在工作......但在我的 Controller 中,引用始终为空。

在我的 Controller 中,我只有这样的东西:
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.
}
});
}

Angular 然后提示它找不到 facebookProvider。关于我如何做到这一点的任何想法?

最佳答案

用数组括号括起来你的工厂函数,如下所示

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

API 文档不够清晰。具有数组括号的要点是您可以指定依赖项。它将在使用 AUTO.$inject 创建您的服务时注入(inject)。但是由于您没有依赖项,它将跳过该任务:)

无论如何,如果您需要依赖项,您可以像这样请求它们
app.factory('facebook', ["$log", function($someCrazyLoggerService){
$someCrazyLoggerService.log("I'm Auto Injected crazy Logger");
}]);

关于dependency-injection - 将 Facebook JS SDK 注入(inject) AngularJS Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com