0

最近、オープン グラフにアップグレードし、fb:friendpile fb:like-box などの Facebook ソーシャル プラグインをウェブサイトに実装しました。

これらの新機能を実装して以来、これらのプラグインでランダムな動作が見られます。

私のホームページと同様に、URL を入力して初めてア​​クセスすると、Facebook ソーシャル プラグインはレンダリングされません。

しかし、CTRL F5 を押すと、それらが表示されます。最初は私のマシンに関係があるのではないかと思っていましたが、昨日、私のユーザーの 2 人が同じ問題を報告しました。

私はグーグルで調べましたが、接続コードを配置する場所に関係があるようです。現在、スクリプトのこの関連部分を head タグに配置しています - body タグの直前に配置しようとしましたが、違いはありませんでした。

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

                /* 登録されたすべてのイベント */
                FB.Event.subscribe('auth.login', function(response) {
                    // レスポンスで何かをする
                    ログインする();
                });
                FB.Event.subscribe('auth.logout', function(response) {
                    // レスポンスで何かをする
                    ログアウト();
                });
            };
            (関数() {
                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);
            }());

            関数ログイン(){        
                document.location.href = "<?php echo $this->baseUrl(); ?>/login/log";
            }
            関数ログアウト(){
                FB.init({appId: '<?php echo Zend_Registry::getInstance()->configuration->facebook->appid;?>'});               
                FB.logout(関数(応答) {
                      // ユーザーはログアウトされました
                    });
                document.location.href = "<?php echo $this->baseUrl(); ?>/ログイン/ログアウト";
                false を返します。
            }
</script>

トラブルシューティングに関する洞察をいただければ幸いです ありがとう

4

1 に答える 1

1

ログアウトロジックに問題があるようです(-を呼び出しますがFB.logout()、循環しているように見える'auth.logout'イベントlogout()も呼び出します)。関数内の呼び出しlogout()も削除する必要があります。タグがないことがXFBMLがIEでレンダリングされない原因であることが多いので、それを再確認します。次のような通常のスクリプトタグを使用して、非同期読み込みを同期読み込みに置き換えることもできます。FB.init()logout()xmlns:fb<html>

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

ただし、コードの大部分は問題ないように見えるため、ライブの再現ケースの方が便利です。

編集:例については、 http ://fbrell.com/xfbml/fb:login-buttonをチェックアウトすることもできます。

于 2010-07-12T00:19:27.083 に答える