首页 文章

Facebook开放图 - 每次都不显示登录按钮

提问于
浏览
0

我最近升级到开放图并在我的网站上实现了一些facebook社交插件,如fb:friendpile fb:like-box等

自从我实现了这些新功能以来,我看到了这些插件的一些随机行为 .

就像在我的主页上,当你输入网址并第一次去的时候,没有任何facebook社交插件被渲染 - 没有登录按钮,没有朋友堆也没有 - 没有 .

但是当你按下CTRL F5时 - 它们会出现 . 首先我认为它可能与我的机器有关,但昨天我的两个用户报告了同样的问题 .

我用Google搜索,似乎与您放置连接代码的位置有关 . 现在,我将脚本的相关部分放在我的头标签中 - 我甚至尝试将它放在身体标签的末尾 - 但它没有任何区别 .

<script type="text/javascript">
    window.fbAsyncInit = function() {
       FB.init({appId: '<?php echo Zend_Registry::getInstance()->configuration->facebook->appid;?>', status: true, cookie: true, xfbml: true});

                /* All the events registered */
                FB.Event.subscribe('auth.login', function(response) {
                    // do something with response
                    login();
                });
                FB.Event.subscribe('auth.logout', function(response) {
                    // do something with response
                    logout();
                });
            };
            (function() {
                var e = document.createElement('script');
                e.type = 'text/javascript';
                e.src = document.location.protocol +
                    '//connect.facebook.net/en_US/all.js';
                e.async = true;
                document.getElementById('fb-root').appendChild(e);
            }());

            function login(){        
                document.location.href = "<?php echo $this->baseUrl(); ?>/login/log";
            }
            function logout(){
                FB.init({appId: '<?php echo Zend_Registry::getInstance()->configuration->facebook->appid;?>'});               
                FB.logout(function(response) {
                      // user is now logged out
                    }); 
                document.location.href = "<?php echo $this->baseUrl(); ?>/login/logout";
                return false;
            }
</script>

任何有关解决问题的见解都将不胜感激谢谢

1 回答

  • 1

    您的注销逻辑似乎有问题(您在 logout() 中调用 FB.logout() - 但在'auth.logout'事件上调用 logout() ,这似乎是循环的) . 您还应该删除 logout() 函数内的 FB.init() 调用 . <html> 标签上缺少 xmlns:fb 通常是导致XFBML无法在IE中呈现的原因,所以我要仔细检查一下 . 您还可以尝试使用正常的脚本标记替换同步加载的异步加载,例如:

    <script src="http://connect.facebook.net/en_US/all.js"></script>
    

    但是一个实时的repro案例会更有帮助,因为你的代码在大多数情况下看起来很好 .

    编辑:你也可以签出http://fbrell.com/xfbml/fb:login-button的例子 .

相关问题