在Facebook应用程序中的对话框中邀请朋友

时间:2010-12-30 11:27:08

标签: php facebook

我正在尝试使用Facebook的Javascript API(FB.ui)创建一个在应用程序中显示朋友邀请对话框的Facebook应用程序。

为此,我遵循了this tutorial

我有两个问题:

  1. 我在请求表单中添加的操作网址是“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)“。

  2. 请求表单中的跳过按钮会在新窗口(新浏览器选项卡)中打开操作网址,而不会像邀请按钮一样发布到自身。

  3. 我该如何解决这些问题?

    --------------------更新:------------------------- -------

    我已经尝试过如果我们说过并将代码更改为:

    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/

1 个答案:

答案 0 :(得分:0)

请阅读官方Facebook document

也可以尝试使用action="http://appname.mydomain.com/post_invite.php"

编辑:我刚刚意识到!你使用IFrame或FBML作为画布类型吗?!
如果您使用的是IFrame,则需要fb:serverFbml才能在IFrame中使用FBML。

另请注意,FBML将为deprecated

  

我们正在弃用   FBML。如果你正在建立一个新的   请在Facebook.com上申请   使用HTML实现您的应用程序,   JavaScript和CSS。你可以使用我们的   JavaScript SDK和社交插件   嵌入许多相同的社交   FBML中提供的功能。而   我们还有功能   尚未移植,我们不是   更长时间向FBML添加新功能。