【问题标题】:invite friends in a dialog in a Facebook application在 Facebook 应用程序的对话中邀请朋友
【发布时间】:2011-06-01 12:33:02
【问题描述】:

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

为此,我关注了this tutorial

我有两个问题:

  1. 我在请求表单中输入的操作 url 是“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>(document.domain=http://facebook.com>)获取属性 Window.closeInviteWidget 的权限被拒绝。”

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

我该如何解决这些问题?

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

我已经尝试按照 ifaour 所说的去做,并将代码更改为:

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://example.com(document.domain 尚未设置)从http://apps.facebook.com(document.domain=http://facebook.com)获取属性 Window.closeInviteWidget 的权限被拒绝...

这是我的应用设置(我添加了空格,因为我无法添加更多链接):
网址:http://appname.example.com/
画布页面:http://apps.facebook.com/appname/
画布网址:http://appname.example.com/
画布 FBML/iframe : iframe
授权后重定向 URL:http://apps.facebook.com/appname/

【问题讨论】:

    标签: php facebook


    【解决方案1】:

    请阅读官方 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 添加新功能。

    【讨论】:

    • 当我写 action="post_invite.php" facebook 时将其更改为 - action="apps.facebook.com/appname/post_invite.php" 当他渲染它时,它不会改变任何东西。我正在使用 IFram。如果不使用 FBML,我应该怎么做?我不能放 fb:serverFbml 因为我只向 FB.ui 发送 fbml 的内容...
    • 你能分享你的代码吗?为什么它是一样的?这次操作没有指向您的域,对吧?
    • 我已经在我的测试应用程序上使用了你的确切代码,它工作得很好,请确保你的发布操作链接在你的应用程序设置中的域设置内!
    • 我已将我的应用程序设置添加到问题中,我应该更改一些内容吗?
    • 我还注意到,在用户获得授权后(如果会话为空),他返回appname.mydomain.com 而不是应用程序。会不会是同样的原因?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2015-07-29
    • 1970-01-01
    • 2011-06-09
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多