我正在尝试使用Facebook的Javascript API(FB.ui)创建一个在应用程序中显示朋友邀请对话框的Facebook应用程序。
为此,我遵循了this tutorial
我有两个问题:
我在请求表单中添加的操作网址是“http://apps.facebook.com/appname/post_invite.php” 但我发现帖子后面的iframe来源是“http://example.com/post_invite.php” 当这个iframe尝试做的时候: parent.closeInviteWidget(); 我收到一个错误说:
“< http://example.com>(尚未设置document.domain)的权限被拒绝从< http://apps.facebook.com>获取属性Window.closeInviteWidget(document.domain =< {{ 3}}&GT)“。
请求表单中的跳过按钮会在新窗口(新浏览器选项卡)中打开操作网址,而不会像邀请按钮一样发布到自身。
我该如何解决这些问题?
--------------------更新:------------------------- -------
我已经尝试过如果我们说过并将代码更改为:
function inviteFriends(user_name, category_id, category_name)
{
url = appBaseUrl + "/index.php?category_id=" + category_id;
req = "<fb:req-choice url='" + url + "' label='Authorize My Application' />";
content = user_name + " opened a new category called " + category_name + ". " + req;
action = 'post_invite.php';
fbmi_text = '<fb:request-form action="' + action + '" target="_self" method="post" invite="true" type="Invite" content="' + content + '" <fb:multi-friend-selector showborder="false" actiontext="Invite yor friends" email_invite="false" import_external_friends="false" /> </fb:request-form>';
FB.ui({
method:'fbml.dialog',
width:'750px',
fbml:fbmi_text
});
}
当我使用FireBug并查看邀请表时,它看起来像这样:
<form id="req_form_4d20682f73ddb6e71722794" content="I've opened a new category called dsfsd. <fb:req-choice url='http://apps.facebook.com/appname/index.php?category_id=60' label='Authorize My Application' /> type="Invite" invite="true" method="post" target="_self" action="http://apps.facebook.com/appname/post_invite.php">
...
</form>
但我仍然得到同样的错误:
http://facebook.com的权限被拒绝(document.domain尚未设置)从http://example.com获取属性Window.closeInviteWidget(document.domain = http://apps.facebook.com)...
这是我的应用设置(我添加了空格,因为我无法添加更多链接):
网站网址:http://facebook.com
画布页面:http://appname.example.com/
画布网址:http://apps.facebook.com/appname/
画布FBML / iframe:iframe
授权后重定向网址:http://appname.example.com/
答案 0 :(得分:0)
请阅读官方Facebook document。
也可以尝试使用action="http://appname.mydomain.com/post_invite.php"
。
另请注意,FBML将为deprecated:
我们正在弃用 FBML。如果你正在建立一个新的 请在Facebook.com上申请 使用HTML实现您的应用程序, JavaScript和CSS。你可以使用我们的 JavaScript SDK和社交插件 嵌入许多相同的社交 FBML中提供的功能。而 我们还有功能 尚未移植,我们不是 更长时间向FBML添加新功能。