将Facebook登录添加到Angular2-Meteor应用程序

时间:2016-07-05 17:44:53

标签: meteor angular angular2-meteor

我正在尝试将Facebook身份验证添加到Angular2-Meteor应用程序中,该应用程序最初是作为教程中的社交应用程序开始的,并且正逐渐被修改为不那么通用的东西。但是,在这个特定用例上似乎没有太多发布。

注意:我已经在Meteor论坛和Gitter中询问过但是没有成功。

以下是我采取的步骤:

使用

添加了服务配置包

meteor add service-configuration

在server / services.ts创建一个包含(使用我的实际密钥)的文件:

ServiceConfiguration.configurations.upsert({
    "service": "facebook" 
}, {
    $set: {
        "settings": {
            "appId": “appid”,
            “secret": "secret",
            "loginStyle": "popup"
        }
    }
});

但是在编译时,我收到错误说

cannot find name 'ServiceConfiguration'

这让我觉得软件包没有正确安装,但卸载/重新安装它并没有解决问题,它显示在我的.meteor目录中。

客户端我正在使用Meteor导入的组件中的按钮上调用此方法:

facebook() {
    Meteor.loginWithFacebook((err) => {
      if (err) {
        //Handle error
      } else {
        //Handle sign in (I reroute)
        this.router.navigate(['/home']);
      }
    })

这会引发控制台错误

meteor_1.Meteor.loginWithFacebook is not a function

但我怀疑这是ServiceConfiguration未注册的事实。

项目的Git repo在这里:https://github.com/nanomoffet/ng2-starter,引用的文件是server / services.ts和client / app.ts

1 个答案:

答案 0 :(得分:1)

目前无法在TypeScript中使用ServiceConfiguration。我在我的应用程序中所做的是我创建了一个Javascript文件,我在其中进行了ServiceConfiguration调用。

  1. meteor add service-configuration

  2. 创建文件./server/service-config.js

    Meteor.startup(() => {
        ServiceConfiguration.configurations.remove({
            service: "facebook"
        });
        ServiceConfiguration.configurations.insert({
            service: "facebook",
            appId: '<APP_ID_YOU_GET_FROM FROM_FACEBOOK>',
            loginStyle: "popup",
            secret: '<SECRET_YOU_GET_FROM_FACEBOOK>'
        });
    });
    
  3. 我只是用Google测试过,对我来说效果很好。