0

HTTP POSTを送信して自分のFacebookページに投稿したいと思います。私がこれをやっているやり方は、私のFacebookのページに投稿するために使用される永続的なaccess_tokenを作成することです。問題は、fire_tugやその他のツールを使用して(ハードコードされているため)、access_tokenを簡単に実行/検査できることです。どうすれば他の人とつながっているかのように送ることができます。Facebook APIにHTTPリクエストを送信して投稿を作成する

$appID = 'MY_APP_ID'; 
$fb_page_id = 'MY_PAGE_ID'; 
$fb_page_access_token = 'PERMANENT_ACCESS_TOKEN'; 

$html = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' 
     . '<html><body>' 
     . '<div id="fb-root"></div>' 
     . "<script type=\"text/javascript\"> 
      function post_to_fb(commentText, commentUsername, commentLink) { 
      var logoName = get_logoname_from_link(commentLink); 
      var strURL = 'https://graph.facebook.com/" . $fb_page_id . "/feed'; 
      var params = 'link=' + commentLink + '&name=Brandchamp+-+' + logoName + '&message=[' + commentUsername +'+commented on ' + logoName + ':]+' + commentText + '&access_token=" . $fb_page_access_token . "'; 

      var xmlHttpReq; 
      xmlHttpReq = new XMLHttpRequest(); 
      xmlHttpReq.open('POST', strURL, true); 
      xmlHttpReq.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
      xmlHttpReq.send(params); 
      } 

      window.fbAsyncInit = function() { 
       FB.init({ 
       appId: " . $appID . ", 
       status: true, 
       cookie: true, 
       xfbml: true, 
       }); 

       FB.Event.subscribe('comment.create', function(response) { 
       var commentQuery = FB.Data.query('SELECT fromid, text FROM comment WHERE post_fbid=\'' + response.commentID + '\' AND object_id IN (SELECT comments_fbid FROM link_stat WHERE url=\'' + response.href + '\')'); 
       var userQuery = FB.Data.query('SELECT name FROM user WHERE uid in (select fromid from {0})', commentQuery); 

       FB.Data.waitOn([commentQuery, userQuery], function() { 
        var commentRow = commentQuery.value[0]; 
        var userRow = userQuery.value[0]; 

        var commentText = commentRow.text; 
        var commentUsername = userRow.name; 

        post_to_fb(commentText, commentUsername, response.href); 
       }); 

      }); 


      }; 
      (function() { 
      var e = document.createElement('script'); 
      e.async = true; 
      e.src = document.location.protocol + '//connect.facebook.net/de_DE/all.js'; 
      document.getElementById('fb-root').appendChild(e); 
      }()); 
     </script>" 
     . '</body></html>'; 
print $html; 
+0

スニッフィングPOSTデータではない容易に達成何か、あなたのページでプレーンテキストとしてaccess_token' 'の存在についてもっと心配する必要がありますフォーム提出をグラフにスニッフィングすることについて –

答えて

3

は、単純にユーザーがアクセストークンを見せてはいけない:あなたはあなたを付与しているユーザーならば、あなたのページ壁サーバー側

0

いただきました問題に投稿するプロキシのいくつかの種類を作成する必要がありますパーミッションは自分自身のaccess_tokenを火かき棒で見ることができます。 Firebugはクライアント側のみです。また、公式のjavascript sdkは、クライアントにaccess_tokenを与えます。私はその悪いとは思わない。

ユーザーはいつでも自分のパスワードを見ることができます:)。何が悪いですか?

ネットワーク経由でアクセストークンを盗聴することに気を付ける必要があります。 @ Juicyは、その状況を克服するためにhttpsを使用するよう提案しました。コメントを読んだ後

編集:あなたの状況で

、私はジャバスクリプト/ AJAXを使用しないようお勧めします。

また、自分のPHPコードでsdkを使用することをお勧めします。 sdkはすべてのセキュリティ対策を講じます。

PHPの公式SDK:それはよりHTTPを介して配信された場合に

https://github.com/facebook/facebook-php-sdk

HTTPS上を通過
+0

上記のaccess_tokenはユーザーに属していません。それは、このaccess_tokenをパラメータとして持つhttp投稿リクエストを送信するだけで、そのFacebookページを投稿する機能を誰でも使用できるようにするために使用される永続的なアクセストークンです。 – obada

関連する問題