Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook登录按钮消失了_Facebook_Login - Fatal编程技术网

Facebook登录按钮消失了

Facebook登录按钮消失了,facebook,login,Facebook,Login,我按照Facebook文档在页面上放置了一个登录按钮。直到最近,一切都很顺利。在我没有任何代码更改的情况下,按钮现在显示出一种奇怪的行为: (问题#1)如果我已经登录到Facebook(使用Facebook验证cookie),那么当我访问我的网站时,按钮只显示“登录”,即使我已经指定了自定义标记。它应该显示“登录Facebook” (问题#2)如果我没有登录Facebook,那么当我访问我的网站时,fb登录按钮根本不存在 以下是我的代码: 我已经包括了xmlns:fb=”http://ogp.m

我按照Facebook文档在页面上放置了一个登录按钮。直到最近,一切都很顺利。在我没有任何代码更改的情况下,按钮现在显示出一种奇怪的行为:

问题#1)如果我已经登录到Facebook(使用Facebook验证cookie),那么当我访问我的网站时,按钮只显示“登录”,即使我已经指定了自定义标记。它应该显示“登录Facebook”

问题#2)如果我没有登录Facebook,那么当我访问我的网站时,fb登录按钮根本不存在

以下是我的代码:

我已经包括了xmlns:fb=”http://ogp.me/ns/fb#“xmlns:og=”http://ogp.me/ns#“作为我的主html节点的属性

那么我有:

<div class="fb-login-container">
  <fb:login-button scope="email" size="medium" onlogin="CheckFBAccount();">Login with Facebook</fb:login-button>
</div>
<script type="text/javascript" src="//connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" language="javascript">
    $(window).load(function ()
    {
        window.FB.init({ appId: XXXXXXXXXXX, status: true, cookie: true, xfbml: true, oauth: true });
    });
</script>
这解决了按钮根本不显示的问题(问题#2已解决),但如果系统上已经有FB auth cookie,则它仍会忽略我的自定义标签(问题#1仍然存在)

我正在浏览论坛和文档,试图找出发生了什么变化,但还没有发现任何变化。显然FB又改变了一些东西(或者可能是他们引入的一个bug)。任何帮助都将不胜感激


注意:只要按钮在页面上可见(带有我的自定义标签),单击和身份验证行为就可以了。同样,问题是按钮根本没有显示或忽略我的自定义标签。

我认为您需要异步加载FB库,并滚动您自己的自定义FB登录按钮

这是我从一个德国网站上修改的一些代码-

如果您已经在加载jQuery,这是一个更干净的解决方案,可以让您将初始化代码保存在$(window.load)中


$(窗口)。加载(函数()
{
//保存缓存,以便稍后恢复
var cache=jQuery.ajaxSettings.cache;
jQuery.ajaxSettings.cache=true;
//异步加载FB库
//“en_US”是硬编码的,但您可以呈现一个变量
//包含本地化页面的正确FB区域设置代码
jQuery.getScript('//connect.facebook.net/en_US/all.js',函数()
{
init({appId:xxxxxxxxxx,状态:true,cookie:true,xfbml:true,oauth:true});
//连接任何其他FB事件;例如,下面是如何
//收听FB“喜欢”的活动
window.FB.Event.subscribe(“edge.create”),函数(响应)
{
//做些有趣的事
});
});
//恢复jQuery缓存
jQuery.ajaxSettings.cache=cache;
//连接自定义FB登录按钮的单击事件
$(“#idFacebookLoginBtn”)。在(“单击”,函数(e)
{
e、 预防默认值();
login(函数(){CheckFBAccount();},{scope:'email'});
返回false;
});
});
接下来,您需要制作自己的按钮,可能如下所示:

window.fbAsyncInit = function ()
{
   FB.init({
      appId: XXXXXXXXXXXX,
      status: true,
      cookie: true,
      xfbml: true
   });
};
(function (d)
{
   var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
   if (d.getElementById(id)) { return; }
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_US/all.js";
   ref.parentNode.insertBefore(js, ref);
} (document));
<div id="idFacebookLoginBtn" class="facebook-login-btn" >Login with Facebook</div>
使用Facebook登录

非常好。正是我需要的。虽然我是在追求一个同步解决方案,但只要这一个工作,我很高兴。我试过了,看起来很好。
<div id="idFacebookLoginBtn" class="facebook-login-btn" >Login with Facebook</div>