Meteor的accounts-facebook
包非常容易设置。要输入Facebook应用程序ID和秘密令牌,我在浏览器中加载了我的流星网络应用程序,然后单击登录按钮,然后单击“配置Facebook”,它会询问我的配置值,例如应用程序ID和秘密令牌。
现在我想改变它们,无法弄清楚它们存储在哪里。我没有在我的meteor应用程序目录或子目录中的任何文件中看到它们,也没有在任何地方的数据库中看到它们。
答案 0 :(得分:27)
配置数据存储在mongodb中。
如果你加载
meteor mongo
然后使用db.meteor_accounts_loginServiceConfiguration.find()
您应该看到您的配置数据
你也可以更新它!如果你回来了
{ "service" : "x", "appId" : "x", "secret" : "x", "_id" : "abc" }`
在同一个mongo shell中:
db.meteor_accounts_loginServiceConfiguration.update({_id:'abc'},
{$set:{"appId" : <new app id>, "secret" : <new secret>}});
(使用您要编辑的服务配置中的_id
字段。
在Meteor中你可以改用它:
ServiceConfiguration.configurations.update({
service:"facebook"
}, {
$set: {
<new params>
}
});
注意要在meteor中执行此操作,您需要使用以下命令添加此包:
meteor add service-configuration
答案 1 :(得分:19)
详细说明Kristoffer的答案,以下是如何在运行时配置应用程序
<强> /server/boot.js 强>
configureFacebook = function(config) {
// first, remove configuration entry in case service is already configured
ServiceConfiguration.configurations.remove({
service: "facebook"
});
ServiceConfiguration.configurations.insert({
service: "facebook",
appId: config.clientId,
secret: config.secret
});
};
// set the settings object with meteor --settings private/settings-local.json
var facebookConfig = Meteor.settings.facebook;
if(facebookConfig) {
console.log('Got settings for facebook', facebookConfig)
configureFacebook(facebookConfig);
}
这与本地和生产中使用的一些设置文件一起使用:
<强> /private/local-settings.json 强>
{
"facebook" : {
"clientId": "330foobar",
"secret": "52e1e247a5a1234klasdf087vasdff07"
}
}
要在本地开发,我只需执行meteor --settings private/local-settings.json
并将facebook的生产设置部署到生产服务器meteor deploy --settings private/prod-settings.json
。
答案 2 :(得分:4)
这个怎么样:
Accounts.loginServiceConfiguration.insert({
service: "facebook",
appId: "1292962797",
secret: "75a730b58f5691de5522789070c319bc"
});
在此处找到:http://docs.meteor.com/#meteor_loginwithexternalservice
答案 3 :(得分:2)
这将在启动时删除所有服务,并根据您的settings.json重新插入它们(jteor -settings settings.json) 咖啡脚本等价物:
@privateSettings = Meteor.settings.private
for s in privateSettings.services
ServiceConfiguration.configurations.remove service: s.service
ServiceConfiguration.configurations.insert s
存储在settings.json中的设置:
{
"private": {
"services": [{
"service": "google",
"clientId": "yourappid.apps.googleusercontent.com",
"secret": "yoursecret"
},{
"service": "twitter",
"consumerKey": "yourconsumerkey",
"secret": "yoursecret"
},{
"service": "facebook",
"appId": "yourappid",
"secret": "yoursecret"
}],
}
}
答案 4 :(得分:1)
如果您的应用程序中没有太多数据,请运行:
meteor reset
这将清除应用程序的所有Mongo数据。
答案 5 :(得分:1)
[注意:对于Meteor&gt; = 1.2.2]
官方Meteor文档here解释了如何执行此操作。
添加service-configuration
包(否则您无法使用ServiceConfiguration
):
$ meteor add service-configuration
然后你可以把它放在Meteor.startup
:
Meteor.startup(function () {
// Set Facebook app configurations
ServiceConfiguration.configurations.upsert({
service: "facebook"
}, {
$set: {
appId: 'YOUR_APP_ID',
secret: 'YOUR_APP_SECRET'
}
});
return;
});
在settings.json
中外部化Facebook配置也许最终的解决方案是将Facebook应用程序的配置放在设置文件中
/settings.json
像这样:
{
"facebook" : {
"appId": "APP_ID",
"secret": "APP_SECRET"
}
}
然后你必须用
启动Meteor应用程序$ meteor --settings settings.json
以加载设置文件。
最后,您可以从设置文件中加载Meteor.startup
内的Facebook配置:
Meteor.startup(function () {
// Load and set Facebook app configurations
var facebookConfig = Meteor.settings.facebook;
ServiceConfiguration.configurations.upsert({
service: "facebook"
}, {
$set: {
appId: facebookConfig.appId,
secret: facebookConfig.secret
}
});
return;
});