我正在尝试将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
答案 0 :(得分:1)
目前无法在TypeScript中使用ServiceConfiguration。我在我的应用程序中所做的是我创建了一个Javascript文件,我在其中进行了ServiceConfiguration调用。
meteor add service-configuration
创建文件./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>'
});
});
我只是用Google测试过,对我来说效果很好。