我如何重新配置​​Meteor的帐户-facebook,或者Meteor的Facebook配置在哪里?

时间:2013-06-17 04:37:14

标签: facebook meteor

Meteor的accounts-facebook包非常容易设置。要输入Facebook应用程序ID和秘密令牌,我在浏览器中加载了我的流星网络应用程序,然后单击登录按钮,然后单击“配置Facebook”,它会询问我的配置值,例如应用程序ID和秘密令牌。

现在我想改变它们,无法弄清楚它们存储在哪里。我没有在我的meteor应用程序目录或子目录中的任何文件中看到它们,也没有在任何地方的数据库中看到它们。

6 个答案:

答案 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;
});