0

Facebook アプリで JavaScript を使用して友達を招待する際に問題が発生しました。私のコードは次のとおりです。

<div id="fb-root"></div>
    <script>
                $(function() {
        FB.init({
            appId      : '<?php echo APP_ID;?>', // App ID
            status     : true, // check login status
            cookie     : true, // enable cookies to allow the server to access the session
            xfbml      : true,  // parse XFBML
            frictionlessRequests : true,
        });
        FB.Canvas.setAutoGrow();
                    function sendRequestViaMultiFriendSelector(){
                        FB.ui({method: 'apprequests',
                            message: 'My Great Request DONALD'
                        });
                    }
                });
    </script>

当然、次の方法で js sdk をインポートしました。

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

そして、友達を招待するためのボタンをバインドしました:

$('.step2').children('.tasto').click(function(){
    //sendRequestViaMultiFriendSelector();
    console.log("Gooby pls");
});

私のページでは、コンソールで次のエラーが発生します。

Unsafe JavaScript attempt to access frame with URL http://apps.facebook.com/termapp/ from frame with URL https://s-static.ak.facebook.com/connect/xd_arbiter.php?version=9#channel=f25e11b77&origin=http%3A%2F%2Fwww.termapp.test&channel_path=%2F%3Ffb_xd_fragment%23xd_sig%3Df3245a897%26. Domains, protocols and ports must match.

そして当然ボタンは効きません。

私は Chrome を使用しており、私のサイトは Zend を使用して php で作成されています。仮想ホスト上にいるため、アプリを表示できません。

4

1 に答える 1

0

FB が推奨する方法で all.js ファイルをロードしていません。こちらのドキュメントをご覧ください。

https://developers.facebook.com/docs/reference/javascript/

そのページでは、API を非同期でロードすることを提案しています。

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

    // Additional initialization code here
  };

  // Load the SDK Asynchronously
  (function(d){
     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.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>

チャンネルファイルなどの詳細については、ドキュメントを参照してください。

于 2012-08-10T17:02:14.583 に答える