Я пытаюсь создать приложение Facebook, которое отображает диалоговое окно приглашения друга в приложении, используя Javascript API Facebook (FB.ui).
Для этого я следовал этому учебнику
У меня две проблемы:
URL-адрес действия, который я указал в форме запроса: "http://apps.facebook.com/appname/post_invite.php", но я вижу, что источник iframeпосле сообщения "http://example.com/post_invite.php" и когда этот iframe пытается это сделать: parent.closeInviteWidget ();Я получаю сообщение об ошибке:
"Отказано в доступе для <<a href="http://example.com" rel="nofollow noreferrer">http://example.com> (document.domain не был установлен) для получения свойства Window.closeInviteWidget из <<a href="http://apps.facebook.com" rel="nofollow noreferrer">http://apps.facebook.com>(document.domain = <<a href="http://facebook.com" rel="nofollow noreferrer">http://facebook.com>)."
Кнопка пропуска внутри формы запроса открывает 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 не был задан) для получения свойства Window.closeInviteWidget из http://apps.facebook.com (document.domain = http://facebook.com)...
Это настройки моего приложения (я добавил пробелы, потому что не могу добавить больше ссылок):
Сидетьe URL: http://appname.example.com/
Страница холста: http://apps.facebook.com/appname/
URL холста: http://appname.example.com/
Холст FBML / iframe: iframe
URL переадресации после авторизации: http://apps.facebook.com/appname/