[英]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.