2

これが非常に単純な質問であることは知っていますが、これに対する解決策は見つかりませんでした。セキュア ブラウジングをオンにしているユーザーがアプリを開いた場合、https://トリガーされFB.getLoginStatusません。最初に使用FB._HTTPSしましたが、現在は機能していましたが、FB は を持つすべての要素を削除しました._。では、どのようにFB.getLoginStatus作業するのhttps://ですか?私のコードは次のようになります

 <script src="//connect.facebook.net/en_US/all.js"></script>
 <script>
        console.log("layout");
        //FB._https = (window.location.protocol == "https:");
        //FB._https = true;
        console.log("fb https true");
        FB.init({
            appId : '<?php echo $this->appId; ?>',
            channelUrl : '//<?php echo $_SERVER["HTTP_HOST"]; ?>/static/content/channel.php',
            status : true, // check login status
            cookie : true, // enable cookies to allow the server to access the session
            xfbml : true // parse XFBML
        });
   </script>
 function PostAction(custom_action)
 {
     console.log('outside of fbgetlogin');
     FB.getLoginStatus(function(response)
    {
        console.log("in getlogin status");
        if (response.authResponse) {
            fbcallBack(response);
        } else {
            FB.login(fbcallBack, {scope:'publish_stream'});
        }
    });
}

私のchannel.phpファイルには

  <?php
 $cache_expire = 60*60*24*365;
 header("Pragma: public");
 header("Cache-Control: max-age=".$cache_expire);
 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
 ?>
   <script src="//connect.facebook.net/en_US/all.js"></script>

私のPostAction機能はイベントでトリガーされonclickます。FB.getLoginStatus is triggered when user is onhttp:// bit not triggered when user is onhttps://`

getloginstatus を https:// で機能させる方法を誰か教えてもらえますか?

問題の詳細を更新

問題を詳しく教えてください。Facebookのアクション動詞を実装しました。私は3つの動詞を実装しました。欲しい、持っている、お勧めします。ユーザーがそのボタンをクリックしたときに、ユーザーのログインステータスを確認したいと思います。ご覧のとおり、カスタム ボタンの onclick イベントで PostAction() 関数を呼び出しました。そのイベントで、ユーザーがログインしているかどうかを確認したいと思います。この関数は別のファイルにあります。また、初期化関数は、5 月のレイアウト ファイルに存在します (一般化の観点から)。では、この状況をどのように処理できますか?

4

1 に答える 1

1

非同期ロードを使用し、in から getLoginStatus を呼び出す必要があります。

 <div id="fb-root"></div>
<script>
      window.fbAsyncInit = function() {
        FB.init({
    appId  : '135669679827333',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true, // parse XFBML
    channelUrl : 'https://anotherfeed.com/emo/channel.html', // channel.html file
    oauth  : true // enable OAuth 2.0
        }); 
  //      
  FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    // the user is logged in and has authenticated your
    // app, and response.authResponse supplies
    // the user's ID, a valid access token, a signed
    // request, and the time the access token 
    // and signed request each expire
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
  } else if (response.status === 'not_authorized') {
    // the user is logged in to Facebook, 
    // but has not authenticated your app
  } else {
    // the user isn't logged in to Facebook.
  }
 });
//          
        });
      };
  // Load the SDK Asynchronously
(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";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
于 2012-06-21T15:07:10.500 に答える