Как разрешить пользователям добавлять наше приложение в качестве вкладки в их профиль? - PullRequest
1 голос
/ 10 июля 2010

В настоящее время у нас есть приложение Canvas на основе iframe. Часть Canvas работает нормально и вообще не касается API Facebook, поскольку нам не нужны какие-либо разрешения от пользователей в плане доступа к их социальному графу; данные, которые мы используем, поступают исключительно из-за пределов Facebook.

То, что мы хотели бы сделать, - это разрешить пользователям добавлять FBML-версию нашего приложения в свои профили в качестве вкладки. Тем не менее, неясно, как мы должны активировать эту функцию, используя текущие API Facebook.

Настройки страницы холста и обратного вызова настроены и работают правильно, и в настоящее время у нас есть имя вкладки и URL-адрес, настроенный в наших настройках приложения (и прямое нажатие на URL-адрес вкладки загрузит нашу минимальную тестовую страницу), но нет очевидного способ предложить пользователям возможность добавить эту вкладку в свои профили.

Первоначально мы думали, что нам нужно добавить нашу собственную кнопку «Добавить вкладку профиля» в xfbml, как упоминалось в http://wiki.developers.facebook.com/index.php/Fb:add-profile-tab

Но даже когда мы уменьшаем iframe до чего-то столь же скелета, как

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
 <script src="http://static.ak.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>

 <fb:add-profile-tab></fb:add-profile-tab>

 <script type="text/javascript">
     FB.init("<our secret key>", "xd_receiver.htm");
 </script>
</body>
</html>

элемент xfbml не отображается. Safari и Chrome оба перечисляют следующую ошибку в консоли: «Небезопасная попытка JavaScript получить доступ к фрейму с URL [URL нашего приложения на facebook] из фрейма с URL [URL, с которого загружается наш iframe]. Домены, протоколы и порты должны совпадать».

У нас есть URL-адрес Connect, указывающий на наше приложение на вкладке Connect на странице настроек приложения. Файл xd_receiver.htm находится в том же каталоге, что и страница iframe, и его содержимое

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
<script src="http://static.ak.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script>
</body>
</html>

, что, как представляется, рекомендует вся соответствующая документация. Браузер определенно загружает его, что подтверждается соответствующими панелями отладки (веб-инспектор, firebug и т. Д.).

Итак, вопрос в том, является ли это правильным способом добавления функции «добавить на вкладку профиля» в наше приложение? Если так, как мы решаем междоменную ошибку? Если нет, что мы должны делать вместо этого? Кажется, что текущая документация в основном сфокусирована на API Графика и Аутентификации, ни в одном из которых не упоминаются вкладки профиля.

Ответы [ 2 ]

2 голосов
/ 10 июля 2010

В настройках приложения убедитесь, что они установлены:

  • Canvas>
    • URL страницы холста
    • URL обратного вызова холста
  • Профили>
    • Имя вкладки
    • URL-адрес вкладки

Запрос на вкладку перейдет к {Canvas Callback URL} / {URL вкладки}.Тогда что-то вроде этого должно работать: http://apps.facebook.com/fbrelll/xfbml/fb:add-profile-tab

Это использует обновленный JS SDK.Я не могу опубликовать больше ссылок, но сайт разработчика и репозиторий github содержат полезную информацию о SDK.

0 голосов
/ 11 июля 2010

Оказалось, что <fb:add-profile-tab> просто не рендерится, если пользователь сначала не разрешил приложению подключаться к ним через что-то вроде <fb:login-button>

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