2009-08-09 4 views
6

Я работаю над написанием небольшого приложения для Facebook только для удовольствия и обучения. К сожалению, документация разработчиков, вики и образцы для разработчиков Facebook оставляют желать лучшего.Может ли FBML использоваться в приложении iFrame Facebook?

Если мое приложение является iFrame-приложением (PHP), могу ли я использовать FBML на странице или мне нужно использовать XFBML? Если мне нужно использовать XFBML, есть ли где-нибудь хранилище фрагментов, которые я мог бы просмотреть?

Я ищу, чтобы добавить окно селектора. Например, добро пожаловать в приложение, выберите объект, отправьте его 20 друзьям.

Вы могли бы подумать, что помощник друга будет частью акций для приложений Facebook, но, по-видимому, нет.

Я могу использовать FBQL и CSS для определения своих собственных, но не было бы стандартов и согласованности?

Есть ли определенная, с нуля, простая в использовании программа для разработчиков приложений для Facebook, которая охватывает теги FBML, теги XFBML и что происходит с примерами?

ответ

8

Я думаю, что в каждом ответе, который я задаю на вопрос Facebook, я в значительной степени упоминаю, что «документация на Facebook отстойна, поэтому не чувствуйте себя плохо, если вы не можете найти что-то».

Ответ да, вы можете определенно использовать FBML в приложении IFrame. Я делаю это регулярно. Facebook размывает линии между приложениями IFrame и приложениями FBML с XFBML, что отлично. В принципе, XFBML - это просто регулярный FBML, за исключением того, что он анализируется и отображается через библиотеки javascript Facebook Connect. Из-за этого вы видите небольшую задержку перед визуализацией элемента управления FBML, но, как правило, это не большая проблема.

Я приведу вам пример загрузки селектора друзей прямо из одного из моих приложений IFrame. Вы увидите, что он окружен тегами fb:serverfbml, которые вам нужно отобразить несколько более сложных тегов FBML. Элементы FBML, которые не имеют, нуждаются в теге fb: serverfbml вокруг них, перечислены на XFBML wiki page.

Во всяком случае, какой-то код:

<fb:serverfbml style="width: 650px;"> 
<script type="text/fbml"> 
    <fb:fbml> 
     <fb:request-form 
      action="http://my.app.com/invite/sent" 
      method="POST" 
      invite="true" 
      type="My App Name" 
      content="You should use My App Name. All the cool kids are doing it. 
       <fb:req-choice url='http://apps.facebook.com/my-app' 
       label='<?php 
        echo htmlspecialchars("That sounds sweet!",ENT_QUOTES); 
        ?>' 
       /> 
      " > 
      <fb:multi-friend-selector 
       showborder="false" 
       actiontext="Invite your friends to use My App Name." 
       exclude_ids="1234556,465555" 
       rows="3" 
      /> 
     </fb:request-form> 
    </fb:fbml> 
</script> 
</fb:serverfbml> 

Экранирование кавычек получает немного сложнее со всеми вложенными тегами, поэтому вы должны следить за тем. Вы можете видеть, что мой пример из PHP-приложения, и я оставил escape-вызов htmlspecialchars() там только для иллюстративных целей (хотя для этой конкретной строки не требуется экранирование).

Во всяком случае, если у вас установлено приложение Facebook Connect уже для вашего приложения IFrame, тогда это должно работать с небольшим количеством настроек. Если у вас еще нет подключения к Facebook, следуйте инструкциям Rendering XFBML на XFBML wiki page.

+0

Zombat, спасибо за информацию. Это, однако, вызывает еще один вопрос. В настоящее время я использую клиентскую библиотеку PHP и имею традиционный код $ facebook = новый Facebook ($ appapikey, $ appsecret); $ user_id = $ facebook-> require_login(); Оттуда я запускаю FBQL, чтобы отменить пользовательскую информацию. Эти конфликты с вызовами FB.Init() вообще? – 2009-08-09 18:59:25

+1

Нет. PHP-клиент Facebook - это что-то совершенно отдельно от библиотек Javascript, так как он полностью серверный. Библиотека PHP и библиотеки Javascript позволяют делать то же самое, только в разных средах (например, на стороне сервера и на стороне клиента). – zombat