В настоящее время у нас есть приложение 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 Графика и Аутентификации, ни в одном из которых не упоминаются вкладки профиля.