Javascript 通过向Facebook API发送HTTP请求创建帖子

Javascript 通过向Facebook API发送HTTP请求创建帖子,javascript,facebook,facebook-graph-api,facebook-apps,facebook-access-token,Javascript,Facebook,Facebook Graph Api,Facebook Apps,Facebook Access Token,我想通过发送HTTP帖子在我的facebook页面上发布。我这样做的方式是创建一个永久访问令牌,用于发布到我的facebook页面。问题是访问令牌可以使用firebug或任何其他工具轻松获取/检查,因为它是硬编码的。我怎样才能以不让别人知道的方式发送呢 $appID = 'MY_APP_ID'; $fb_page_id = 'MY_PAGE_ID'; $fb_page_access_token = 'PERMANENT_ACCESS_TOKEN'; $html = '<!DOCTYPE

我想通过发送HTTP帖子在我的facebook页面上发布。我这样做的方式是创建一个永久访问令牌,用于发布到我的facebook页面。问题是访问令牌可以使用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;

简单地说,不让用户看到您的访问令牌:您必须创建某种代理,它将发布到您的页面墙服务器端

简单地说,不让用户看到您的访问令牌:您必须创建某种代理,它将发布到您的页面墙服务器端

如果授予您权限的用户可以看到,有什么问题firebug中他/她自己的访问令牌。Firebug仅在客户端。另外,官方javascript sdk向客户端提供访问令牌。我认为这并不坏

用户始终可以看到自己的密码:。有什么不好

您应该注意通过网络嗅探访问令牌。正如@Juicy建议的那样,使用https来克服这种情况

阅读评论后编辑:

在您的情况下,我建议不要使用javascript/ajax

另外,我建议您在自己的php代码上使用sdk。 sdk使用所有应该采取的安全措施

官方php sdk:


如果授予您权限的用户可以在firebug中看到他/她自己的访问\u令牌,那么会出现什么问题。Firebug仅在客户端。另外,官方javascript sdk向客户端提供访问令牌。我认为这并不坏

用户始终可以看到自己的密码:。有什么不好

您应该注意通过网络嗅探访问令牌。正如@Juicy建议的那样,使用https来克服这种情况

阅读评论后编辑:

在您的情况下,我建议不要使用javascript/ajax

另外,我建议您在自己的php代码上使用sdk。 sdk使用所有应该采取的安全措施

官方php sdk:


嗅探通过HTTPS传递的POST数据不是一件容易实现的事情,如果它通过HTTP提供,您应该更担心页面中是否存在access_令牌作为纯文本,而不是嗅探表单提交到图形。嗅探通过HTTPS传递的POST数据不是一件容易实现的事情,如果访问令牌是通过HTTP提供的,您应该更担心页面中是否存在明文形式的访问令牌,而不是嗅探表单提交到图形。上面的访问令牌不属于用户。它是一个永久访问令牌,用于向任何使用它的人提供在该facebook页面上发布的能力,只需发送一个http post请求,该请求将此访问令牌作为参数。上面的访问令牌不属于该用户。它是一个永久访问令牌,用于向任何使用它的人提供在该facebook页面上发布的能力,只需发送一个以该访问令牌为参数的http post请求。