使用AJAX / jQuery发布到Facebook墙/源

时间:2010-11-17 09:33:31

标签: jquery ajax facebook facebook-graph-api

把头发拉过这个头发。

我正在编写一个连接Facebook的网络应用程序,最终会将一些任意信息发布到整个过程中选择的朋友的墙上。

我现在处于最后阶段并希望张贴到墙上会很简单,但我花了很长时间试图解决这个问题,所以我希望有人可以帮助我。

我正试图像这样使用ajax发布:

$.ajax({
    type: 'POST',
    url: "https://graph.facebook.com/bbeckford/feed",
    data: {message: wallMessage, target_id: friendID, access_token: "<?= $cookie['access_token'] ?>", format: "json"},
    success: function(data) { alert(data); },
    dataType: "JSON"
});

但我只是不断收到此错误:“XMLHttpRequest无法加载https://graph.facebook.com/bbeckford/feed。Access-Control-Allow-Origin不允许原点http://www.secretsantasetup.com。”

我已经完成了搜索,一个建议是制作一个php代理,这是一个可行的选择吗?我该怎么做呢?

我接近这完全错了吗?

任何帮助将不胜感激, 谢谢, -ben

修改 我想在后台执行此操作,例如用户已选择10个朋友,然后在提交时,应用程序将遍历每个朋友并在他们的墙上发布内容。这可能吗? 谢谢!

编辑2 下一页底部的测试控制台正是我想要做的,但是没有源代码? - http://developers.facebook.com/docs/reference/rest/stream.publish

4 个答案:

答案 0 :(得分:7)

在这里使用javaScript SDK

第1步

首先,您的应用程序应获得在用户墙或用户朋友墙上发布的权限。

来自Facebook的示例代码:link

FB.login(function(response) {
  if (response.session) {
    if (response.perms) {
      // user is logged in and granted some permissions.
      // perms is a comma separated list of granted permissions
    } else {
      // user is logged in, but did not grant any permissions
    }
  } else {
    // user is not logged in
  }
}, {perms:'read_stream,publish_stream,offline_access'});

需要在用户或用户的朋友墙上发布publish_stream。

需要修改的行: {perms:'read_stream,publish_stream,offline_access'})

要详细了解其他权限:link

第2步

取自Facebook JavaScript SDK页面并调整link

   FB.ui(
   {
     method: 'stream.publish',
     message: 'getting educated about Facebook Connect',
     attachment: {
       name: 'Connect',
       caption: 'The Facebook Connect JavaScript SDK',
       description: (
         'A small JavaScript library that allows you to harness ' +
         'the power of Facebook, bringing the user\'s identity, ' +
         'social graph and distribution power to your site.'
       ),
       href: 'http://github.com/facebook/connect-js'
     },
     target_id: 'ENTER YOU FRIENDS IDS - more than one, seperate by commas',
     action_links: [
       { text: 'Code', href: 'http://github.com/facebook/connect-js' }
     ],
     user_message_prompt: 'Share your thoughts about Connect'
   },
   function(response) {
     if (response && response.post_id) {
       alert('Post was published.');
     } else {
       alert('Post was not published.');
     }
   }

 );

需要编辑或添加的行: target_id:'输入您的朋友IDS - 不止一个,用逗号分隔',

:)

答案 1 :(得分:2)

您无法将ajax请求发送到另一个域。

只需要facebook JS SDK并做任何你想做的事。

答案 2 :(得分:0)

我不知道我在哪里听到这个,但是:

jQuery.getJSON("https://graph.facebook.com/"+therequestid+"/?callback=?&access_token="+access_token,{},
           function(data, textStatus, jqXHR){
                          //bla-bla
           }
       );

应该工作,你需要添加“?callback =?”东西。我不知道为什么这样做。但是,只要它有效,我就会保持高兴。

答案 3 :(得分:0)

您可能需要在验证用户时设置范围(如果您还没有这样做)。

如果您使用WAMS进行身份验证,请查看此博客以设置范围http://blogs.msdn.com/b/azuremobile/archive/2013/11/25/what-s-new-in-azure-mobile-services-1-6-4247.aspx