Я пытаюсь создать приложение Facebook, которое отображает диалог приглашения друга в приложении, используя API Javascript Facebook (FB.ui).
Для этого я следовал этому руководству
У меня две проблемы:
URL-адрес действия, который я вложил в форму запроса, – « http://apps.facebook.com/appname/post_invite.php », но я вижу, что источник iframe после сообщения « http://example.com/ post_invite.php "и когда этот iframe пытается сделать: parent.closeInviteWidget (); Я получаю сообщение об ошибке:
«Permission denied for < http://example.com > (document.domain не установлен), чтобы получить свойство Window.closeInviteWidget из < http://apps.facebook.com > (document.domain = < http: // facebook.com >). "
Кнопка пропуска внутри формы запроса открывает URL-адрес действия в новом окне (новая вкладка браузера), а не сообщение для себя, как кнопка приглашения.
Как я могу исправить эти проблемы?
——————– ОБНОВИТЬ : —————————- —-
Я пытался сделать то, что сказал и изменил код:
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 ) .. ,
Это мои настройки приложения (я добавил пробелы, потому что я не могу добавить больше ссылок):
URL сайта: http://appname.example.com/
Холст Страница: http://apps.facebook.com/appname/
URL холста: http://appname.example.com/
Холст FBML / iframe: iframe
URL-адрес перенаправления после авторизации: http://apps.facebook.com/appname/
Пожалуйста, прочитайте официальный документ Facebook.
Также попробуйте использовать action="http://appname.mydomain.com/post_invite.php"
.
EDIT: Я только что понял! вы используете IFrame или FBML как тип холста ?!
Если вы используете IFrame, тогда fb: serverFbml необходим для использования FBML в вашем IFrame.
Также обратите внимание, что FBML будет устаревшим :
Мы находимся в процессе устаревания FBML. Если вы создаете новое приложение на Facebook.com, используйте свое приложение, используя HTML, JavaScript и CSS. Вы можете использовать наши JavaScript SDK и социальные плагины, чтобы внедрить многие из тех же социальных функций, которые доступны в FBML. Несмотря на то, что все еще есть функциональность, которую мы еще не портировали, мы больше не добавляем новые функции в FBML.