You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

热点登录页Facebook登录按钮无法显示问题求助

解决Facebook登录按钮不显示的问题

我帮你梳理了代码里的几个关键问题,这些大概率是导致登录按钮无法正常显示的核心原因:

1. App ID不一致

你在FB.init()里配置的appId1749574641802184,但加载SDK的脚本URL里写的是2034911913423175,两个ID不匹配会直接导致SDK初始化失败,自然无法渲染登录按钮。必须保证两处的App ID完全一致

2. 拼写错误导致状态逻辑失效

statusChangeCallback函数里,你把登录状态的正确值connected拼成了conected,这个拼写错误会让状态判断逻辑彻底失效,进而影响SDK的正常工作:

// 错误写法
if(response.status === "conected"){
// 正确写法
if(response.status === "connected"){

3. 多余的语法符号

加载SDK的自执行函数末尾多了一个分号,虽然不影响运行,但可能导致潜在的语法解析问题:

}(document, 'script', 'facebook-jssdk'));;
// 改成
}(document, 'script', 'facebook-jssdk'));

4. 重复定义登录按钮

你同时用了<fb:login-button><div class="fb-login-button">两种方式定义登录按钮,建议只保留一种,避免渲染冲突。

5. 开发者后台域名配置遗漏

别忘了在Facebook开发者后台的产品 > Facebook登录 > 设置里,把你的测试域名添加到「有效的OAuth重定向URI」和「网站域名」列表中,否则SDK会因为域名未授权而拒绝工作。

修正后的完整代码示例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>facebook login</title>
</head>
<body>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : '你的统一AppID', // 替换成你正确的App ID
      cookie     : false,
      xfbml      : true,
      version    : 'v3.0'
    });

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

  (function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = 'https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v3.0&appId=你的统一AppID&autoLogAppEvents=1'; // 和上面的App ID保持一致
    fjs.parentNode.insertBefore(js, fjs);
  }(document, 'script', 'facebook-jssdk'));

  function statusChangeCallback(response){
    if(response.status === "connected"){
      setElements(true);
      console.log("logged in and authenticated");
    }
  }

  function checkLoginState() {
    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
      // 替换成你的路由器重定向地址
      window.top.location = "你的重定向URL";
    });
  }
</script>

<!-- 保留一种按钮即可,这里使用带自定义属性的版本 -->
<div class="fb-login-button" data-width="300" data-max-rows="1" data-size="large" data-button-type="continue_with" data-show-faces="false" data-auto-logout-link="false" data-use-continue-as="false"></div>
</body>
</html>

另外,建议打开浏览器开发者工具(按F12),切换到「控制台」标签页查看是否有Facebook SDK相关的报错信息,这些报错能帮你快速定位剩余问题。

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

火山引擎 最新活动