[英]Differentiate a not-logged-in Facebook user vs. a logged-in Facebook user but not authorize our application yet
使用JavaScript代碼為Facebook邀請朋友時遇到一些麻煩。 細節:
用戶Facebook A已經授權了我們的Web應用程序,並授予我們脫機訪問其訪問令牌的權限。
用戶A登錄到我們的網站。 系統檢測到A與Facebook同步了他的帳戶(在我們的網絡上),因此它從Facebook檢索A的信息。
在同一瀏覽器中 ,A打開一個新選項卡,然后注銷Facebook。
用戶B借用A計算機 ,然后使用其帳戶Facebook Facebook B登錄Facebook。
他轉到我們的網站(A已打開的選項卡),然后單擊“邀請朋友”。 該列表顯示用戶B的所有朋友,而不是用戶A的所有朋友 。
這種情況(盡管很少發生)使我們的小組測試人員感到困擾,因為這可能會導致我們的Web應用程序發生意外行為(用戶可能會認為他同步了錯誤的Facebook帳戶)。
為了阻止這種情況,我想通過用戶授權我們的應用程序(用戶A)來區分當前登錄的Facebook用戶(用戶B)。 目前,我正在像這樣檢查:
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'});
});
}
上面的代碼適用於大多數情況,但是有一個問題:
因此,我無法區分情況2與情況3。在這兩種情況下,getLoginStatus的結果都是相同的,但我想用不同的方式解決它:
有什么解決方案嗎? 任何想法將不勝感激。
getLoginStatus()返回一個Json對象,類似於:
{
status: one of 'not_authorized' / 'connected' / 'unknown'
authResponse: ....
}
not_authorized表示他們已登錄Facebook,但尚未授權您的應用程序; connected表示他們已授權該應用程序; unknown表示他們未登錄到Facebook。
(來自內存,所以可能不准確)
另外,您可能要考慮偵聽auth事件,這可能會使此問題更容易。 http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.