我正在编写一个连接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
答案 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