2017-06-08 68 views
0

的问题:流星铁路由器登录路由直通的Facebook账户不工作

当我的普通用户使用标准的电子邮件/密码,账户密码“去登录重定向页面,便可以进入凭证和路由器将继续呈现请求的页面。

例如: /private_page(需要登录)。用户尝试去http://foo.com/private_page他们与登录页面一起出现。用户正确输入用户名/密码,现在显示/ private_page。

这工作,什么行不通......

上面同样的例子,但现在用户与Facebook账户,Facebook的身份验证。一切和以前一样,并且用户已经成功登录Facebook并且能够进入我的网络应用程序,除了路线从不显示/ private_page。它保持在经过身份验证的/登录页面上,而不显示登录模板。

简而言之 如何使Facebook的身份验证的用户直通和路线像常规基于密码的用户操作所要求的路线?

铁路由器配置:

Router.onBeforeAction(function() {  
    if (!Meteor.userId() && !Meteor.loggingIn()) { 
     this.redirect('login'); 
     this.stop(); 
    } else { 
     this.next(); 
    } 
},{except: ['login', 'contact, 'terms']}); 

流星包:

[email protected] 
[email protected] 
[email protected] 
useraccounts:bootstrap 
useraccounts:iron-routing 

回答

0

我终于来到了一个解决方案。

在回顾Meteor软件包的Github问题之后:(meteor-useraccounts)我发现了我一直存在的确切问题。

https://github.com/meteor-useraccounts/core/issues/685

我花了太多时间试图使挂钩正确触发了我对流星的OAuth的Facebook的使用。我的最终解决方案也是直接连接到Meteor方法调用,并创建我自己的登录,注册,密码重置等表单。

上面是我现在有完全控制的形式,我不需要处理额外的包。

如果有人来发现这篇文章,并且正在发布像postSignUpHook这样的'meteor-useraccounts'防火钩的问题,您可能会决定放弃该软件包并制作自己的用户帐户模板并连接逻辑以使用本机流星方法。

我提交的这个特定问题是因为oAuth Facebook会登录,但我无法将它重定向到最初请求的路线。 oAuth的作品和我的用户可以登录到我的网络应用程序,但我不能让他们到最初请求的网址。

我怎么解决这个问题:

的lib /路由上面

Router.onBeforeAction(function() {  
    if (!Meteor.userId() && !Meteor.loggingIn()) { 
     originalUrl = this.originalUrl; 
     this.redirect('login'); 
     this.stop(); 
    } else { 
     this.next(); 
    } 
},{except: ['login', 'resetPwd', 'help'] }); 

的关键点采取从片段之遥,是全局变量我宣布originalUrl。这是使用路由器this.originalUrl。该网址包含用户输入的原始网址,并在铁路由器重定向到登录页面之前被捕获。

现在在登录页面上,我使用自己的自定义模板创建了两种不同的登录方法。他们都使用Meteor.loginWithPasswordMeteor.loginWithFacebook方法。

客户端/ login.js

'click #fb-login' : function(e){ 
     e.preventDefault(); 
     Meteor.loginWithFacebook({}, function(err){ 
      if(err) { 
       // some error occured 
      } 
      else { 
       if(Router.current().route._path == "/login" && typeof originalUrl == "undefined") 
        Router.go('/'); 
       else 
        Router.go(originalUrl); 
      } 
     }); 
    } 

希望这有助于别人谁可能会遇到这个问题。