You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React项目中使用Facebook SDK实现Facebook账号登出功能

React 接入 Facebook SDK 实现登出功能操作指南

1. 注入SDK初始化代码

找到项目public目录下的index.html文件,将Facebook官方提供的初始化代码添加到<head>标签内,注意替换appId为你实际的应用ID:

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId            : '145617534309548',
      autoLogAppEvents : true,
      xfbml            : true,
      version          : 'v11.0'
    });
  };
</script>
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script>

2. 在App组件中添加登出处理逻辑

修改你的App组件,新增登出处理函数,通过props传递给Navbar组件供触发使用,修改后代码如下:

import React from "react";
import Navbar from './components/Navbar';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom'
import './components/Navbar.css';
import './App.css';
import MainStructure from "./pages/MainStructure";
import Study from "./pages/Study"
import FacebookLogin from 'react-facebook-login'
import { useState } from "react";

function App() {
  
  const responseFacebook = (response) => {
    console.log(response);
    setIsLoggedin(true)
  }

  const [isLoggedin, setIsLoggedin] = useState(false);

  // 新增登出处理函数
  const handleFbLogout = () => {
    // 先判断FB SDK是否加载完成,避免报错
    if (window.FB) {
      window.FB.logout(function(response) {
        // 登出完成后修改登录状态
        setIsLoggedin(false)
      });
    }
  }

  return (
    <Router>
      {isLoggedin ?
        (<div>
          <Route path='/' >
            {/* 将登出函数传递给Navbar组件 */}
            <Navbar onLogout={handleFbLogout}/>
          </Route>

          <Switch>
            <Route exact path='/' >
              <MainStructure/>
            </Route>
            <Route path='/study'>
              <Study/>
            </Route>
          </Switch>
        </div>) 
        :
        (
          <div className="">
            <div className="facebookLogin">
              <FacebookLogin
                appId="145617534309548"
                autoLoad={true}
                fields="name,email,picture"
                callback={responseFacebook} />
            </div>
          </div>
        )
      }
    </Router>
  );
}

export default App;

注:这里顺带修正了你原代码中BrowserRouter误用为Switch的问题,避免路由匹配异常。

3. 在Navbar组件中添加登出按钮

在你的Navbar组件中接收onLogout props,添加登出按钮触发即可,示例代码:

function Navbar({ onLogout }) {
  return (
    <div className="navbar">
      {/* 其他导航内容 */}
      <button onClick={onLogout}>退出登录</button>
    </div>
  )
}
export default Navbar

注意事项

  • 测试时需确保你的应用域名已添加到Facebook开发者后台的OAuth授权白名单中,否则SDK调用会被拦截
  • 若出现FB is not defined报错,优先检查SDK加载状态、初始化代码的appId是否填写正确

内容的提问来源于stack exchange,提问作者ed ei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:36:03