使用Meteor.loginWithFacebook时出现内部服务器错误

时间:2015-03-25 19:53:03

标签: javascript facebook meteor oauth

使用service-configurationaccounts-facebook软件包,点击Facebook按钮并从弹出的Facebook授权窗口登录后,我们在执行时获得Internal server error Meteor.loginWithFacebook

这是在一个非常基本的例子上测试的,是什么导致了这个错误?

Template.login.events({
    'click .btn-facebook': function (ev) {
        Meteor.loginWithFacebook({}, function(error) {
            if(error) {
                throw new Meteor.Error('Facebook login failed: ', error);
            }
        })
    }
});

/server/lib/config/social.js

Meteor.startup(function() {

  ServiceConfiguration.configurations.update(
    { service: "facebook" },
    { $set: {
        appId: "xxx",
        secret: "xxx"
      }
    },
    { upsert: true }
  );

})

错误(服务器端)

Exception while invoking method 'login' undefined

错误(客户端)

Error: Internal server error [500]
    at _.extend._livedata_result (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:4964:23)
    at onMessage (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:3725:12)
    at http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:2717:11
    at Array.forEach (native)
    at Function._.each._.forEach (http://localhost:3000/packages/underscore.js?0a80a8623e1b40b5df5a05582f288ddd586eaa18:156:11)
    at _.extend._launchConnection.self.socket.onmessage (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:2716:11)
    at REventTarget.dispatchEvent (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:156:22)
    at SockJS._dispatchMessage (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:1141:10)
    at SockJS._didMessage (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:1199:18)
    at WebSocket.SockJS.websocket.that.ws.onmessage (http://localhost:3000/packages/ddp.js?d1840d3ba04c65ffade261f362e26699b7509706:1346:17)

1 个答案:

答案 0 :(得分:1)

我有同样的问题,并解决了这个问题:

检查您是否按照here所述配置了架构:

Schema.User = new SimpleSchema({
    _id: {
        type: String
    }
    ...
});

您应该将第二部分添加到Accounts.onCreateUser这样的server/accounts.js中,例如:

Accounts.onCreateUser(function (options, user) {
  if (user.services.facebook) {
    user.emails = [{
      address: user.services.facebook.email,
      verified: true
    }];
  }
  return user;
});

它会将Facebook电子邮件附加到新创建的帐户。错误应该消失。

相关问题