2015-07-21 57 views
0

我有兩種單獨的方式讓用戶註冊到該網站。一種方法是隻是簡單的註冊和另一種是推薦註冊,在此路由有一個令牌它是涉及到人的用戶ID誰提到他們是這樣的:使用社交媒體創建的訪問用戶文檔

Router.route('referral-signup', { path: '/referral-signup/:userId'});

在此推薦路線,我使用Meteor方法調用來在推薦表中創建文檔,結構如下:{refereeId: String, referrerId: String, verified: false},其中包含裁判和引薦來源的所有相關信息,以及裁判的電子郵件是否已通過驗證。

這兩種註冊流程都允許用戶使用Twitter或Facebook(定期註冊&引薦註冊)。問題是,與這些社交平臺簽署了用戶的流星方法是這樣的:

Meteor.loginWithTwitter({}, function(error) { 
    if (error) { 
     throw new Meteor.Error("Twitter login failed."); 
    } else { 
     Router.go('home'); 
     return; 
    } 
}); 

在這個函數的回調,我似乎無法能夠訪問所創建的用戶,因此可以不要使用流星方法調用來創建推薦文檔,如果用戶被引用並通過社交平臺註冊,則這是一個問題。有沒有人有任何關於如何在社交註冊回調中訪問用戶的想法?

回答

1

我在類似情況下采取的方法是在引用路由被調用時(在路由代碼本身中)將引用令牌放入會話變量中。創建用戶時,我使用會話變量來設置引用者信息,然後清除它。這也有助於在實際註冊前新訪客在該網站周圍漫遊一段時間。

+0

所以我決定採用這種方法,但是我真的想避免使用Sessions,因爲它們在擴展時遇到問題。這種方法是否繼續爲你工作,或者你最終選擇了一種更持久的/更少會話的解決方案? – TDmoneybanks

+0

我仍然在使用* Session *作爲這個特定的功能,但在我的代碼的其他領域中,我已經切換到了無功變量。一個cookie也可以工作,但被動變量看起來很好。 –

+0

是的,我考慮使用reactiveVar,但我基本上需要在頁面重定向後捕獲它。它現在使用會話,所以謝謝你的幫助! – TDmoneybanks