我在使用JavaScript代碼爲Facebook邀請朋友時遇到一些麻煩。詳細信息:區分未登錄的Facebook用戶與已登錄的Facebook用戶但未授權我們的應用程序
User Facebook A已經授權我們的Web應用程序,並授予我們離線訪問其訪問令牌的權限。
用戶A登錄我們的網站。系統檢測到A將他的賬戶(在我們的網上)與Facebook同步,因此它從Facebook檢索A的信息。
在同一瀏覽器中,A打開一個新選項卡,並退出Facebook。
爲用戶B借用計算機,然後登錄Facebook的但他帳號:用戶的Facebook B.
他移動到我們的網站(即一個已經打開的標籤),並單擊「邀請朋友」。 該列表顯示了用戶B的所有朋友,而不是用戶A。
這種情況(雖然很少發生),我們的困擾組的測試,因爲這可能會導致非預期的行爲,我們的Web應用程序(一個用戶可能會認爲他同步錯誤的Facebook帳戶)。
要停止這種情況,我想要區分當前登錄的Facebook(用戶B)和用戶授權我們的應用程序(用戶A)的人員。目前我正在檢查這樣的:
function showInvitationDialog() {
FB.init({
appId:'${appId}',
cookie: false,
status: true,
xfbml: true
});
FB.getLoginStatus(function (response) {
if (response.session) {
if (response.session.uid != ${fbId}) {
alert("You are currently logged in to FB with another account (different to the account you registered). Please make sure that you don't accidently use others FB account to invite");
return;
}
}
var request_ids = FB.ui({ method: 'apprequests',
message: '<@spring.message code="friends.invitation.message" />',
data: 'hello'});
});
}
上面的代碼適用於大多數情況下,但有一個問題:
- 如果用戶X已登錄Facebook的用戶X」,他授權我們我們知道他是誰
- 如果用戶X沒有登錄到Facebook,response.session == undefined
- 如果用戶X用Facebook用戶X登錄',而且他還沒有聲明我們的應用程序,response.session == undefined
所以我不能分辨的情況下2比3的情況下在這兩種情況下,從getLoginStatus的結果是一樣的,但我想以不同的方式解決這個問題:
- 情況下2 - >繼續調用函數讓「登錄對話框」彈出
- 情況3 - >通知用戶他已登錄到錯誤的Facebook 帳戶。
這種情況有什麼解決辦法嗎?任何想法將不勝感激。
實際上,我收到的狀態是:notConnected/connected/unknown。但無論如何感謝您的指導:) –
因此,FB仍然不斷改變他們的API ... –