-1

最近、javascript sdk を使用して facebook api connect を統合しようと決めました..いくつか試した後、クロムの問題に気づきました..このタイプのエラーが発生したのは私だけかもしれません..

:Facebook に接続すると、何度も何度も更新され続けます.. ノンストップでそのタブを閉じなければなりません.. 何が起こるかわかりません

Mozilla をチェックインしたところ、問題なく動作していました。その後、Chrome で再試行しましたが、同じ問題が発生しました。

バックエンド

    <?php if(!defined('DOCROOT')) exit('No directory browsing allowed!');
class fb_connect extends Frontend{

    private $allow_post = true;
    private $allow_get = true;

    function __construct(){
        parent::__construct();

    }

    function index(){

        $facebook = new Facebook(array(
          'appId'  => FBAPPID,
          'secret' => FBSECRETID,
        ));

        $user = $facebook->getUser();
        $outx = NULL;
        if ($user) {
            try {
                $user_profile = $facebook->api('/me');
                $output['user_profile'] =  $user_profile;
            } catch (FacebookApiException $e) {
                $user = null;
            }
        }
        $output['user'] =  $user;

        $this->tpl->contents['fb'] = $this->tpl->fetch('contents/fb_connect',$output);

        $this->tpl->meta['title'] = "Facebook Connect Test";
        //$this->tpl->meta['description'] = $this->lang['contact_meta_description'];
        //$this->tpl->meta['keywords'] = $this->lang['contact_meta_keywords'];
        $this->tpl->render('layouts/default');
    }
}
?>

**正面**

   <?php if ($user) : ?>
      Your user profile is
      <pre>
        <?php print htmlspecialchars(print_r($user_profile, true)) ?>
      </pre>
      <a  onclick="FB.logout();">Logout</a> 
    <?php else : ?>
      <fb:login-button></fb:login-button>
    <?php endif; ?>


    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId: '<?php echo FBAPPID; ?>',
          cookie: true,
          xfbml: true,
          oauth: true
        });
        FB.Event.subscribe('auth.login', function(response) {
          window.location.reload();
        });
        FB.Event.subscribe('auth.logout', function(response) {
          window.location.reload();
        });
      };
      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>
4

1 に答える 1

0

なんで?

FB.Event.subscribe('auth.login', function(response) {
  window.location.reload();
});
FB.Event.subscribe('auth.logout', function(response) {
  window.location.reload();
});

FB.Event.subscribe( EVENT , function(...) {...}) は、 EVENTが発生するたびにトリガーされます。あなたの無限ループがあります。そのブロックの console.log() は 1 回だけトリガーされますが、ページ全体をリロードするため、イベントは再度トリガーされます。

于 2012-08-29T22:53:52.317 に答える