流星Facebook无法授权

Meteor Facebook can't authorize

本文关键字:授权 Facebook 流星      更新时间:2023-09-26

我的问题是,我不能配置服务器与Facebook正常工作。前一段时间我有{{>loginButtons}}和在第一次登录或重置后,我不得不复制和粘贴apId和秘密到弹出窗口,现在我试图自定义这些按钮多一点,我坚持"无效的应用程序ID:未定义"后点击FB按钮(窗口弹出),我甚至可以看到,在url我有未定义的ID https://www.facebook.com/dialog/oauth?client_id=undefined&redirect_uri=http://localhost:3000/_oauth/facebook?close&display=popup&scope=email&state=1111111111111111

这是一个代码,也许你可以帮助我或给我一些其他的方法来做。基本上,我想摆脱这个注册表单为普通用户和保留登录字段为Facebook, Twitter等。

My HTML:

<div id="login-buttons">
    <div class="login-text-and-button">
      <div class="login-button single-login-button" id="login-buttons-facebook">
        <div class="login-image" id="login-buttons-image-facebook"></div>
        <span id="sign-in-facebook" class="text-besides-image sign-in-text-facebook">Sign in with Facebook</span>
      </div>
      <br>
    </div>
</div>

和JS方法:

"click #sign-in-facebook": function(e, tmp) {
        Meteor.call('facebookLogin', function (error, result) {});
        if (Accounts.loginServicesConfigured()) {
            Meteor.loginWithFacebook({
                requestPermissions: ['email']
            }, function(err) {
                if (err) {
                    console.log("error when login with facebook " + err);
                } else {
                    console.log("login with facebook succeeded");
                }
            });
        };
    }

//这是在服务器端

facebookLogin:function(){
    ServiceConfiguration.configurations.remove({
        service: "facebook"
    });
    ServiceConfiguration.configurations.insert({
            service: "facebook",
            appID: "1111111111",
            secret: "1111111111"
        });
}

你可以看到所有的数据都在数据库

meteor:PRIMARY> db.meteor_accounts_loginServiceConfiguration.find()
    { "service" : "facebook", "appID" : "1111111111", "secret" : "211111111", "_id" : "111111" }

这看起来有点不正常。你只需要输入一次facebook的配置。

Meteor.startup(function() {
    ServiceConfiguration.configurations.remove({
        service: "facebook"
    });
    ServiceConfiguration.configurations.insert({
        service: "facebook",
        appID: "1111111111",
        secret: "1111111111"
    });
});

您的登录点击处理程序:

"click #sign-in-facebook": function(e, tmp) {
    Meteor.loginWithFacebook({
            requestPermissions: ['email']
    }, function(err) {
        if (err) {
            console.log("error when login with facebook " + err);
        } else {
            console.log("login with facebook succeeded");
        }
    });
}

尝试使用两个键:clientId和appId(一段时间前facebook将其重命名为clientId)如下:

ServiceConfiguration.configurations.upsert({
  service: "facebook"
  }, {
    $set: {
       appId: '11111',
       clientId: '11111',    // <-- Same as appId
       loginStyle: "popup",
       secret: '22222'
    }
 });