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

使用Web SDK集成Facebook登录时弹窗空白及报错问题

解决Facebook OAuth登录弹窗空白及ErrorUtils invariant #21945错误

针对你遇到的Facebook登录弹窗空白、控制台报Minified invariant #21945错误的问题,以下是针对性的排查和解决步骤:

核心排查点1:Facebook应用域名配置(最常见原因)

登录Facebook开发者后台,找到你的应用,进入「产品」→「Facebook登录」→「设置」页面:

  • 确保有效的 OAuth 跳转 URI中添加了当前网页的完整域名(包括http/https,比如https://yourdomain.com或本地测试的http://localhost:3000)
  • 同时检查「设置」→「基本」页面的网站域名是否填写了正确的域名

未配置允许的域名时,Facebook会直接阻止登录弹窗加载,导致空白。

核心排查点2:应用状态与测试用户权限

  • 若应用处于「开发模式」,只有添加到「角色」→「测试用户」列表中的账号才能正常登录,普通Facebook账号会被拦截
  • 如需对所有用户开放,需将应用提交审核并切换到「上线模式」

核心排查点3:浏览器隐私设置影响

  • 部分现代浏览器默认禁用第三方Cookie,而Facebook登录依赖第三方Cookie维持会话。可尝试在浏览器设置中开启第三方Cookie,或使用隐私模式测试是否恢复正常
  • 若需适配隐私政策,建议迁移到Facebook最新的登录流程,减少对第三方Cookie的依赖

代码层面快速检查

  • 确认FB.init中的appId已替换为应用真实ID,无拼写错误或多余符号
  • 检查SDK脚本加载状态:打开浏览器开发者工具「网络」标签,确认sdk.js已从connect.facebook.net成功加载

附你的代码参考(仅修正APPID占位符):

<!DOCTYPE html>
<html>
<head>
<title>Facebook Login JavaScript Example</title>
<meta charset="UTF-8">
</head>
<body>
<script>

  function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    console.log(response);
    if (response.status === 'connected') {
      testAPI();  
    } else {
      document.getElementById('status').innerHTML = 'Please log into this webpage.';
    }
  }

  function checkLoginState() {
    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });
  }

  window.fbAsyncInit = function() {
    FB.init({
      appId      : '你的真实APPID',
      cookie     : true,
      xfbml      : true,
      version    : 'v19.0'
    });

    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });
  };
 
  function testAPI() {
    console.log('Welcome!  Fetching your information.... ');
    FB.api('/me', function(response) {
      console.log('Successful login for: ' + response.name);
      document.getElementById('status').innerHTML =
        'Thanks for logging in, ' + response.name + '!';
    });
  }

</script>

<fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
</fb:login-button>

<div id="status">
</div>

<script async defer crossorigin="anonymous" src="https://connect.facebook.net/en_US/sdk.js"></script>
</body>
</html>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:47:09