【问题标题】:Where should the service configuration go in meteor? At the client side or at the server side?流星中的服务配置应该放在哪里?在客户端还是在服务器端?
【发布时间】:2017-05-23 01:44:14
【问题描述】:

我正在开发一个自定义 login-with-linkedin 按钮。我有accounts-baseaccounts-oauthpauli:accounts-linkedin 包。我使用了来自linkedin开发者网站的客户端ID和秘密如下

Meteor.startup(function() {
    ServiceConfiguration.configurations.update({
        'service': 'linkedin',
    },
    {
        $set: {
            'clientId': 'myClientId',
            'secret': 'mySecret'
        }
    },
    {
        upsert: true
    });
});

在 Iron 路由器中,我还在 /login 模板上定义了 waitOn 函数,如下所示:

this.route('login', {
    path: '/login',
    waitOn: function() {
       Accounts.loginServicesConfigured();
    }
});

现在,当我单击按钮时,会打开一个弹出窗口,但它不会加载linkedin 登录页面,并显示“ERR_CONTENT_DECODING_FAILED”。

我已经在客户端的 Meteor.startup 函数中编写了 ServiceConfiguration。我在客户端编写服务配置是否正确?还是我应该在服务器端编写它?

【问题讨论】:

    标签: javascript meteor linkedin meteor-accounts


    【解决方案1】:

    它应该在服务器端。从这里的 Meteor 文档,

    http://docs.meteor.com/#/full/meteor_loginwithexternalservice 上面写着

    登录服务配置从服务器发送到客户端 应用启动时的 DDP

    我在服务器端也成功完成了accounts-google的服务配置。

    【讨论】:

    • 好的。我已经在服务器端进行了配置,但是 url 中的 'client_id' 仍然是未定义的。
    • 对我来说,我没有将它包装在Meteor.startup 下。尝试将其从Meteor.startup 中取出,看看是否有效。
    • 我在根目录下定义了一个 settings.json。我已经从 Meteor.startup 函数中删除了我写的所有内容,并将其放在一个单独的文件中,称为 configure-services.js,其中包含以下代码: const services = Meteor.settings.private.oAuth; const configure = function() { if(services) { for(let service in services) { ServiceConfiguration.configurations.upsert({service:service}, { $set: services[service] }); } } } Meteor.server.configureServices = 配置;
    【解决方案2】:

    这个common issue似乎有一个通用的解决方案

    首先,添加服务配置包:

    meteor 添加服务配置

    然后,在您的应用中:

    ServiceConfiguration.configurations.upsert(
          { service: 'weibo' },
          {
            $set: {
              clientId: '1292962797',
              loginStyle: 'popup',
              secret: '75a730b58f5691de5522789070c319bc'
            }
          }
        );
    

    我通常只是在服务器中放置一个带有此代码的 service-config.js 文件。

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 2012-09-22
      • 2022-01-21
      • 2015-12-10
      • 2017-05-17
      相关资源
      最近更新 更多