1
我對Facebook如何在不同的網絡應用(Facebook和Messenger)中管理用戶會話很感興趣。當我進入Messenger Web應用程序時,它知道我已登錄Facebook並讓我使用該應用程序。我想知道哪些技術可以讓我達到這個目標(Redis可能?)或者他們如何共享同一個會話?Facebook如何管理用戶會話?
我對Facebook如何在不同的網絡應用(Facebook和Messenger)中管理用戶會話很感興趣。當我進入Messenger Web應用程序時,它知道我已登錄Facebook並讓我使用該應用程序。我想知道哪些技術可以讓我達到這個目標(Redis可能?)或者他們如何共享同一個會話?Facebook如何管理用戶會話?
messenger.com
向facebook.com
發出ajax請求,並在用戶登錄或不登錄時獲取信息。
在messenger.com
中對您進行身份驗證後,您將有一個獨立於facebook.com
會話的新會話。
其由可以在網絡標籤可以看出從顯影劑工具請求:
POST https://www.facebook.com/login/async_sso/messenger_dot_com/?dpr=1&__a=1
此端點允許messenger.com
使跨源請求(因爲該響應首部的):
access-control-allow-origin: https://www.messenger.com
在x-auth-result
中,有關您的Facebook帳戶的信息以base64格式發送,並使用JSON.parse(atob(...))
進行解析。
例如,我是這樣的:
X-Auth-Result: eyJ1c2VyaWQiOi....sd1EifQ==
然後他們這樣做:
var n = m.getResponseHeader('X-Auth-Result');
if (n) {
var o = JSON.parse(atob(n));
c('Arbiter').inform('messengerdotcom_fb_session_info', o);
}
o
會這個樣子,在我的情況:
{
"userid": "1000....756",
"name": "Ionică Bizău",
"secret": "P0....r",
"persistent": true,
"initial_request_id": "AfU...lwQ"
}
然後,他們最終可以在按鈕中顯示您的全名。
當用戶沒有登錄,Facebook的發送userid: "0"
回:
{
"userid":"0",
"initial_request_id":"A6...YOd"
}
偉大的答案!謝謝你的時間! –