14

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

现在我想改变它们,但不知道它们的存储位置。我没有在我的流星应用程序目录或子目录的任何文件中看到它们,也没有在任何地方的数据库中看到它们。

4

6 回答 6

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 add service-configuration
于 2013-06-17T09:12:27.710 回答
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

于 2014-07-02T11:56:23.697 回答
4

这个怎么样:

Accounts.loginServiceConfiguration.insert({
  service: "facebook",
  appId: "1292962797",
  secret: "75a730b58f5691de5522789070c319bc"
});

在这里找到:http: //docs.meteor.com/#meteor_loginwithexternalservice

于 2013-06-17T05:50:25.037 回答
2

这将简单地在启动时删除所有服务并根据您的 settings.json (meteor --settings settings.json) Coffee-script 等效项重新插入它们:

@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"
    }],
  }
}
于 2015-05-08T09:26:17.343 回答
1

如果您的应用程序中还没有太多数据,只需运行:

meteor reset

这将清除应用程序的所有 Mongo 数据。

于 2015-01-15T05:20:51.633 回答
1

[注意:对于 Meteor >= 1.2.2]

官方 Meteor 文档在这里解释了如何做到这一点。

添加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;
});
于 2015-12-09T22:37:20.563 回答