0

HTTPPOSTを送信してFacebookページに投稿したい。私がこれを行う方法は、Facebookページへの投稿に使用される永続的なaccess_tokenを作成することです。問題は、access_tokenがfirebugまたは他のツールを使用して簡単に取得/検査できることです(ハードコーディングされているため)。他の人から遠ざける方法で送信するにはどうすればよいですか。

$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;
4

2 に答える 2

0

あなたに許可を与えているユーザーがfirebugで自分のaccess_tokenを見ることができる場合の問題は何ですか。Firebugはクライアント側のみにあります。また、公式のjavascriptsdkはaccess_tokenをクライアントに提供します。悪いとは思わない。

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

ネットワークを介したaccess_tokenのスニッフィングに注意する必要があります。@Juicyが提案したように、httpsを使用してその状況を克服します。

コメントを読んだ後に編集する:

あなたの状況では、javascript/ajaxを使用しないことをお勧めします。

また、独自のphpコードではなくsdkを使用することをお勧めします。SDKは、実行する必要のあるすべてのセキュリティ対策を使用します。

公式のphpSDK:

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

于 2012-04-04T07:19:02.433 に答える