приглашать друзей в диалог в приложении Facebook - PullRequest
0 голосов
/ 30 декабря 2010

Я пытаюсь создать приложение Facebook, которое отображает диалоговое окно приглашения друга в приложении, используя Javascript API Facebook (FB.ui).

Для этого я следовал этому учебнику

У меня две проблемы:

  1. 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>)."

  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 не был задан) для получения свойства 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/

1 Ответ

0 голосов
/ 30 декабря 2010

Пожалуйста, ознакомьтесь с официальным документом Facebook .

Также попробуйте использовать action="http://appname.mydomain.com/post_invite.php".

РЕДАКТИРОВАТЬ: Я только что понял! Вы используете IFrame или FBML в качестве типа холста?!
Если вы используете IFrame, тогда fb: serverFbml необходим для использования FBML в вашем IFrame.

Также обратите внимание, что FBML будет устаревшим :

Мы находимся в процессе устаревания FBML. Если вы строите новый приложение на Facebook.com, пожалуйста реализовать свое приложение, используя HTML, JavaScript и CSS. Вы можете использовать наш JavaScript SDK и социальные плагины для встроено много одинаковых социальных функции, доступные в FBML. В то время как есть еще функциональность, которую мы еще не портировали, нас нет больше добавление новых функций в FBML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...