我正在使用 FB.getLoginStatus() 和 FB.Login() 使用 facebook 将用户登录到我的网站。我首先使用 FB.getLoginStatus() 检查页面加载状态,并将状态保存在隐藏变量中。当用户单击我的 facebook 登录按钮时,我首先检查隐藏变量中的值并仅在 FB.getLoginStatus() 未连接时调用 FB.Login()。如果 FB.getLoginStatus() 返回“已连接”,那么我只需在没有 FB.Login() 的情况下将用户登录到我的网站。
我的问题场景 *用户使用 facebook 登录我的帐户 *用户注销我的网站 *我的网站在注销状态下打开 *在另一个选项卡中,当前 facebook 用户注销 facebook,新用户登录 facebook *用户返回我的网站并点击 facebook 登录按钮而不刷新页面 *旧 facebook 用户(不是当前登录到 facebook 的用户)已登录到我的帐户
当用户单击 facebook 登录按钮时,如何识别 facebook 中的最新用户?
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<div id="fb-root">
</div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
// initialize the library with your Facebook API key
var AppID = '<%=AppID%>';
window.fbAsyncInit = function() {
FB.init({
appId: AppID,
status: true,
cookie: true,
xfbml: true,
channelUrl: 'http://<%=Request.ServerVariables("HTTP_HOST")%>/channel.html'
});
FB.Event.subscribe('auth.login', function(response) {
//alert('logged in');
});
FB.Event.subscribe('auth.logout', function(response) {
//alert('logged out');
});
FB.getLoginStatus(function(response) {
if (response.status === "connected") {
var uid = response.authResponse.userID;
document.getElementById('hdnFBConnected').value = uid;
}
else if (response.status === "not_authorized") {
//alert("Not authorized");
document.getElementById('hdnFBConnected').value = '';
}
else {
//alert("user not logged in to facebook");
document.getElementById('hdnFBConnected').value = '';
}
});
};
</script>
<a href="#" onclick="WindowOpen()"><img src="<%=global_language & "/images/FacebookSmall.gif"%>" /></a>
<script type="text/javascript" language="javascript">
function WindowOpen() {
if (document.getElementById('hdnFBConnected').value != '') //user is connected
{
FB.api('/me', { fields: 'first_name, last_name, locale, email' }, function(result) {
var uid = document.getElementById('hdnFBConnected').value;
//log the user into my site
})
}
else { //user is not connected, so calling FB.Login()
FB.login(function(response) {
if (response.authResponse) {
var access_token = response.authResponse.accessToken;
FB.api('/me', { fields: 'first_name, last_name, locale, email' }, function(result) {
var uid = response.authResponse.userID;
var globalLang = '<%=global_language%>';
//log the user into my site })
}
else {
//alert('User cancelled login or did not fully authorize.');
}
}, { scope: 'email' }
);
}
}
</script>
</body>