2014-03-02 16 views
0

loginWithFacebook和loginWithTwitter有時會在我的應用託管在負載均衡器後面的多個無人機/實例上時返回錯誤。loginWithExternalService無法在多個無人機上工作

用戶點擊登錄按鈕,出現一個彈出窗口(並要求用戶登錄,如有必要)然後消失,而不實際記錄用戶或設置Meteor.user()。

Meteor.loginWithFacebook({}, (err) -> 
    console.log Meteor.user() //returns undefined 
    if err 
     console.log err //return Accounts.LoginCancelledError error with no message 
     handleError(err) 
) 

我正在上nodejitsu流星應用程序有2個無人機,與MongoHQ一個MongoDB的後端(我使用沙箱,所以沒有oplogging現在)。當我在本地運行時,上述錯誤不會再現。

這個問題似乎是Facebook的回調不會觸及等待響應的應用程序實例,而是另一個實例。

在負載均衡器上啓用粘滯會話,應用程序的其餘部分工作正常。

有沒有人遇到過這個?這是流星中的一個錯誤嗎?這可以由託管服務提供商處理嗎?

回答

1

發生這種情況是因爲Facebook上的回調回到了其他無人機上,並且其他無人機(這是等待請求的無人機)無法訪問其會話。

如果您使用粘性會話,則可以避免這種情況。如果你可以這樣配置你的負載平衡器,它應該可以工作。

+0

這是我的想法,但雙重檢查與nodejitsu,他們正在使用粘滯會話:https://www.nodejitsu.com/documentation/features/#feature/sticky-sessions 所有其他部分該應用程序似乎與2個無人機一起工作良好,只是登錄功能被破壞了。 – alste

+0

從應用程序發送到Facebook的請求是否實際跟蹤應用程序實例的運行情況,以便Facebook的響應達到該實例? – alste

相關問題