Meteor 帐户凭据分配

Meteor Account Credential Assignment

我有一个 Meteor 应用程序,它与用于用户登录的 Facebook 应用程序配合使用。在实际托管版本中,登录使用实际的 Facebook 应用程序,但在开发中的本地主机中,该应用程序使用 Facebook 测试应用程序。
问题是,当我从开发切换到部署时,我需要注释掉生产凭证并取消注释开发凭证。我该如何解决这个问题?

  // Removes the config b/c dupliation error and re-defines it
  // Facebook API config

 // Since Facebook Test app has been created, wrap this in conditional that only executes if on Amazon server and not localhost


 // STRICTLY - Production
 // ServiceConfiguration.configurations.remove({
 //   service: "facebook"
 // });

 // ServiceConfiguration.configurations.insert({
 //   service: 'facebook',
 //   appId: Meteor.settings.FacebookId,
 //   secret: Meteor.settings.FacebookSecret
 // });


 // STRICTLY - Dev
   ServiceConfiguration.configurations.remove({
    service: "facebook"
 });

  ServiceConfiguration.configurations.insert({
    service: 'facebook',
    appId: 'id',
    secret: 'secret'
  });

您应该将 devprod 变量添加到您的 settings.json 文件,并使用 [=12= 在本地加载它们]. settings.json 文件看起来像这样:

{ 
"dev": {
  "public": {
    "facebook": {
      "appId": "abc123"
     }
   },
  "private": {
    "facebook": {
      "secret": "456def789"
     }
   }
 },
"prod": {
  "public": {
    "facebook": {
      "appId": "def234"
     }
   },
  "private": {
    "facebook": {
      "secret": "789ghi101112"
     }
   }
}

然后您可以像以前一样访问它们:Meteor.settings.dev.public.facebook.appId

public/private 对您的项目来说可能有点矫枉过正(我可能弄乱了括号),但这应该传达了一般概念。有关更多信息,请查看这个经常被引用的 post.