0

実はSymfony2.2で簡単なページを作っています。小枝テンプレートに次のコードがあります。

<!-- facebook link -->
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=297720976910223";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-login-button" data-show-faces="true" data-width="200" data-max-rows="1"></div>
<!-- end facebook link--> 

彼らは次のことを成功させました。

  • マイページにfacebookログインボタンを表示します。
  • ボタンをクリックすると、自分の Facebook アカウントに入ることができます。
  • Facebook の名前がページに表示されます。

今私がやりたいことは: Facebook ポップアップで有効な Facebook アカウントを入力した後、自分のページに戻ったら、何かを警告することができます。たとえば、次のようなものです。

function after_click() {
        FB.getLoginStatus(function(response) {
            if (response.status === 'connected') {
                alert("Facebook user is connected");
            }
        });

..問題は、それがどのように機能するか正確にわからないことです。コードでいくつかのオプションを試し、ネットを検索しましたが、無駄でした。

上記の原則を説明し、ガイドしてくれる人はいますか? (PS: 私の最終的な目的は、「アラート」コードを、ユーザーを別のページにリダイレクトするコードに置き換えることです。)

どうもありがとう。

@Thomas、答えてくれてありがとう.. 他のアラートは表示されません。

<!DOCTYPE html>
<html xmlns:fb="https://www.facebook.com/2008/fbml">
<body>

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : '297720976910223', // App ID from the App Dashboard
      status     : true, // check the login status upon init?
      cookie     : true, // set sessions cookies to allow your server to access the session?
      xfbml      : true  // parse XFBML tags on this page?
    });

    // Additional initialization code such as adding Event Listeners goes here    
    FB.Event.subscribe('auth.login', function(response) {
        alert("test connection");
    });

    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
          // connected
          alert("connected");
        } else if (response.status === 'not_authorized') {
          // not_authorized
          alert("not authorized");
        } else {
          // not_logged_in
          alert("not logged in");
        }
       }, true);

  };

  function testme()
  {
     alert("You clicked on me for a test..");
     FB.getLoginStatus(function(response) {
          alert("xxx_");
        if (response.status === 'connected') {
          // connected
          alert("connected");
        } else if (response.status === 'not_authorized') {
          // not_authorized
          alert("not authorized");
        } else {
          // not_logged_in
          alert("not logged in");
        }
       });

  }

  // Load the SDK's source Asynchronously
  // Note that the debug version is being actively developed and might 
  // contain some type checks that are overly strict. 
  // Please report such bugs using the bugs tool.
  (function(d, debug){
     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" + (debug ? "/debug" : "") + ".js";
     ref.parentNode.insertBefore(js, ref);
   }(document, /*debug*/ false));
</script>


<fb:login-button onlogin="testme()" autologoutlink='true' perms='email,user_birthday,status_update,publish_stream'></fb:login-button>

<!-- Just for testing purposes-->
<button type="button" name="btnTest" onclick="testme()">Test</button>
<div class="fb-login-button" data-show-faces="true" onlogin="testme()" data-width="200" data-max-rows="1"></div>

</body>    
</html>

PS: facebook dev website には次のように書かれています:

前提条件:

HTML ファイルをオンラインでホストできる場所が必要です。まだお持ちでない場合は、Heroku を無料ですぐにセットアップできます。

私は自分の PC でそのファイルをテストしています。それは違いますか..?

4

1 に答える 1

0

この関数FB.getLoginStatusは、ユーザーがログインしたばかりかどうかではなく、ユーザーがアプリケーションで認証されているかどうかのみを通知します。

ログイン ステータスの変更時にリスナーを登録できますconnected

FB.Event.subscribe('auth.login', function(response) {
  // handle the login
});

FB JavaScript SDK イベントの詳細情報。

于 2013-03-17T20:03:23.373 に答える