Angular2与Facebook API

Angular2与Facebook API,facebook,angular,api,typescript,Facebook,Angular,Api,Typescript,我尝试使用Facebook API将用户登录到Angular-2应用程序。我的打字脚本文件中有一个错误。'找不到名称FB' (<any>window).fbAsyncInit = function() { FB.init({ appId : '123456789012345', cookie : true, xfbml : true,

我尝试使用Facebook API将用户登录到Angular-2应用程序。我的打字脚本文件中有一个错误。'找不到名称FB'

    (<any>window).fbAsyncInit = function() {
            FB.init({
            appId      : '123456789012345',
            cookie     : true,
            xfbml      : true,
            version    : 'v2.8'
            });

            FB.getLoginStatus(function(response) {
                statusChangeCallback(response);
            });   
        };
(window).fbAsyncint=function(){
FB.init({
appId:'123456789012345',
曲奇:是的,
xfbml:是的,
版本:“v2.8”
});
FB.getLoginStatus(函数(响应){
状态更改回调(响应);
});   
};

有谁能提供一个解决方案吗?提前谢谢

您需要声明一个常量才能将facebook SDK与angular一起使用

在组件声明的正上方声明FB常量

declare var FB: any;
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: []
})

然后在构造函数中初始化facebook SDK。

那么,是否存在名为FB的对象?装了吗?这是运行时错误吗?@BobbyTables嗨Bobby。。调用函数时,将创建对象FB。这是一个编译时错误。当我在HTML文件中的脚本标记中给出相同的代码时,它就起作用了。但如果我在Angular服务的函数中键入相同的代码,它会说找不到名称FB。我正在寻找一种方法来避免typescript文件中出现这种错误。即使采用这种方法,有时facebook SDK需要一些时间来加载,而FB变量在调用构造函数时还不存在。因此,为了处理这种情况,我们需要在加载FB SDK文件后添加回调。我同意这不是一个很好的解决方案,但这个问题将发生在任何框架中,而不仅仅是在网络速度缓慢的情况下。