代码之家  ›  专栏  ›  技术社区  ›  Gublooo

facebook open graph-每次都不显示登录按钮

  •  0
  • Gublooo  · 技术社区  · 16 年前

    我最近升级到了open graph,并在我的网站上实现了一些facebook社交插件,比如fb:friendpill fb:like box等。

    自从我实现了这些新特性之后,我发现这些插件有一些随机行为。

    就像在我的主页上一样,当你输入URL并第一次去的时候,Facebook的社交插件都没有呈现出来——没有登录按钮,没有朋友堆,没有什么。

    但是当你点击ctrl f5时,它们就会出现。首先,我认为这可能与我的机器有关,但昨天我的两个用户报告了相同的问题。

    我到处搜索,这似乎与你把连接代码放在哪里有关。现在,我把脚本的这个相关部分放在我的头部标签中——我甚至尝试把它放在身体标签的末尾之前——但是没有什么不同。

    <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 回复  |  直到 16 年前
        1
  •  1
  •   daaku    16 年前

    您的注销逻辑似乎有问题(您调用 FB.logout() 在里面 logout() --但也要打电话 注销() 在“auth.logout”事件上,这似乎是循环的)。您还应该删除 FB.init() 打电话给你的 注销() 功能。缺乏 xmlns:fb <html> 标记通常是导致XFBML不能在IE中呈现的原因,所以我会仔细检查一下。您还可以尝试使用如下普通脚本标记将异步加载替换为同步加载:

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

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

    编辑:您也可以签出 http://fbrell.com/xfbml/fb:login-button 例如。

    推荐文章