javascript - 如何检查用户是否已经登录facebook?

标签 javascript facebook facebook-login

我正在使用 facebook javascript SDK 在我的应用程序中集成 Facebook 登录。 我的应用程序中有 2 个 JS 文件。

  1. FacebookLogin.js
  2. 内容.js

现在我正在 content.js 中加载 FacebookLogin.js。 此外,我的 FacebookLogin.js 中有以下代码

var userID;
window.fbAsyncInit = function() {
    //SDK loaded, initialize it
    FB.init({
        appId      : 'MY_APP_ID',
        xfbml      : true,
        version    : 'v2.2'
    });

    //check user session and refresh it
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            //user is authorized
            userID = response.authResponse.userID;
        } else {
            document.getElementById('status').innerHTML = 'Please log into Facebook.';
        }
    });
};

现在我想在我的 content.js 文件中使用该 userID 变量。 这样我就可以检查用户是否已经登录,如下所示

if(userID === undefined && userID === null)
    {
        showSocialLoginPopup(); 
        return false;
    }

这里 showSocialLoginPopup() 显示一个带有不同登录选项的弹出窗口,如 facebook、Twitter 等。现在,如果用户已经登录,那么我不想显示该弹出窗口。

最佳答案

这主要是一个关于范围的问题。

所有 .js 文件都将加载到同一个 DOM 中,因此可以跨文件访问变量和函数等。

一种选择是使 userID 成为全局变量:

1) 确保您的 content.js 在 FacebookLogin.js 之后加载
2) 在任何函数或对象之外声明变量 userID

这将允许您在 JavaScript 中的任何位置访问 userID

这是一个关于 javascript 中变量作用域的小教程:
http://www.w3schools.com/js/js_scope.asp

编辑: 另一个潜在的问题可能是时机。

FB.getLoginStatus() 是一个异步调用,需要一些时间才能完成,直到该调用完成后才会设置 userID。

如果 content.js 中的函数没有落后于某种事件或超时,那么它很可能在 FB 调用完成之前执行,这意味着 userID 仍然是未定义的。

关于javascript - 如何检查用户是否已经登录facebook?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29506225/

相关文章:

javascript - 使用 useReducer 和 useContext,在分派(dispatch)操作时不会重新呈现组件。如何触发重新渲染?

objective-c - 使用 ShareKit 将 UILabel 传递给 Facebook

php - 我想添加一个当我的用户失去互联网连接时显示消息的 facebook 功能

android - 成功登录后 Facebook 未在 Android 中打开新 Activity ,重定向到上一个 Activity

facebook-login - 带有 FBSDKLoginBehaviorWeb 的 FBSDKLoginManager 失败并出现 "Not Logged In"错误

javascript - 如何使用 Javascript 调用 CSS 动画

javascript - 如何根据 JavaScript 条件更改标题颜色

java - Facebook SDK 中的 R.Java 与应用程序 R.java 发生冲突

java - Java SHA1 与 JavaScript SHA1 的不同

facebook - 官方 Facebook 连接按钮为 PNG