0

ユーザーが自分のウェブサイトで「スタンプ」を送信すると、ユーザーの Facebook タイムラインに自動的に投稿しようとしています。テスト スクリプトを実行しています。コード全体は以下のとおりです。

以下のスクリプトをテストするために使用している2つの方法が表示されます。

  • クラス .openGraphButton でクリック イベントをリッスンするもの
  • もう 1 つは、本体の onLoad イベントで postFB() 関数を呼び出します。

問題:

ユーザーが「fb」ボタンをクリックすると、スクリプトは正常に動作し、fb ウォール/タイムラインに投稿します。ただし、ページが読み込まれ、onLoad 呼び出しを介して投稿しようとすると、エラー メッセージ コードが表示されます。

ゴール:

ページが読み込まれたときに、ユーザーの Facebook タイムラインに自動的に投稿したい (つまり、ユーザーが「fb」ボタンをクリックしないようにする)。このようにして、ユーザーが新しい投稿 (私のウェブサイトで別名「スタンプ」) を作成すると、投稿/スタンプが facebook に表示されます。

注: 「スタンプ」という言葉を使用して、私のドメイン/ウェブサイト上のユーザーの投稿を参照しています。

私のコード:

<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body onLoad="postFB(30,85)">
<div id="fb-root"></div>
<script type="text/javascript">

    $(document).ready(function(){
        $('.openGraphButton').click(function(){
            var action = $(this).attr('action');
            var page = $(this).attr('page');
            var userid = 30;
            var stokeid = 85;
            postFB(userid,stokeid);
        });
    });

    function postFB(userid, stokeid){
        var url = "http://www.domain.com/profile-stoke.php?pid="+userid+"&sid="+stokeid;
        postAction ('stamp','passport',url);
    };

    function postAction( action, object_type, object_url ){
        FB.api('/me/[APP_NAME_SPACE]:stamp', 'post', { passport : object_url },function(response){
            if (!response || response.error) {
                        alert('Error occured' + action + '?' + object_type + '=' + object_url);
            } else {
                alert('Post was successful! Action ID: ' + response.id);
            }
        });
    }    
</script>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'APP_ID', // App ID
      channelUrl : '//www.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>
<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=APP_ID";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<input type="button" value="fb" class="openGraphButton" action="stamp" page="http://www.domain.com/profile-stoke.php?pid=30&sid=85" />
</body>

アップデート:

エラー コード 2500 が表示され、「現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります。」というメッセージが表示されます。ただし、ボタンをクリックすると、正常に動作します。クリックを模倣する jquery クリック イベントを実装しようとしましたが、同じエラーが発生します。何か案は?

よろしくお願いします。

4

0 に答える 0