2017-06-08 70 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); 
      } 
     }); 
    } 

希望這有助於別人誰可能會遇到這個問題。