2009-08-09 12 views
6

Pracuję nad napisaniem małej aplikacji na Facebooku po prostu dla zabawy i nauki. Niestety, dokumentacja programisty Facebooka, wiki i sample pozostawia wiele do życzenia.Czy FBML może być używany w aplikacji Facebook iFrame?

Jeśli moja aplikacja jest aplikacją iFrame (PHP), czy mogę użyć strony FBML lub czy muszę korzystać z XFBML? Jeśli muszę używać XFBML, czy istnieje repozytorium urywków gdzieś, co mógłbym przejrzeć?

Szukam dodać pole wyboru znajomego. Na przykład zapraszamy do aplikacji, wybierz obiekt, wyślij go do 20 znajomych.

Można by pomyśleć, że selektor znajomych będzie składnikiem zapasów dla aplikacji na Facebooku, ale najwyraźniej nie.

Potrafię użyć FBQL i CSS do zdefiniowania własnego, ale czy standardy i spójność nie byłyby dobre?

Czy istnieje ostateczny, łatwy do naśladowania tutorial programistów aplikacji na Facebooku, który obejmuje znaczniki FBML, znaczniki XFBML i co dzieje się z przykładami?

Odpowiedz

8

Myślę, że w każdej odpowiedzi na pytanie na Facebooku, dość wspomnę, że "dokumentacja na Facebooku jest do bani, więc nie czuj się źle, jeśli nie możesz czegoś znaleźć."

Odpowiedź brzmi: tak, zdecydowanie można użyć FBML w aplikacji IFrame. Robię to rutynowo. Facebook zaciera linie między aplikacjami IFrame i aplikacjami FBML z XFBML, co jest świetne. Zasadniczo, XFBML to zwykły FBML, z tym wyjątkiem, że jest on przetwarzany i renderowany za pośrednictwem bibliotek javascript Facebook Connect. Z tego powodu widzisz trochę opóźnienia przed renderowaniem formantu FBML, ale generalnie nie jest to duży problem.

Podam przykład ładowania selektora znajomych bezpośrednio z jednej z moich aplikacji IFrame. Zobaczysz, że jest on otoczony tagami fb:serverfbml, które musisz renderować kilka bardziej skomplikowanych tagów FBML. Pozycje FBML, które mają , nie wymagają znacznika fb: serverfbml wokół nich, są wymienione na XFBML wiki page.

Zresztą niektóre kod:

<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> 

Ucieczki cytatów staje się trochę trudne ze wszystkich zagnieżdżonych znaczników, więc trzeba uważać, że. Mój przykład można zobaczyć z aplikacji PHP i zostawiłem tam wywołanie htmlspecialchars() tylko dla celów ilustracyjnych (mimo że ten konkretny ciąg nie potrzebuje ucieczki).

W każdym razie, jeśli masz już zainstalowaną aplikację Facebook Connect dla swojej aplikacji IFrame, powinno to działać z odrobiną ulepszeń. Jeśli nie masz jeszcze połączenia z Facebook Connect, postępuj zgodnie z instrukcjami dotyczącymi renderowania XFBML na stronie XFBML wiki page.

+0

Zombat, dzięki za informację. To jednak rodzi kolejne pytanie. Obecnie korzystam z biblioteki klienta PHP i mam tradycyjny kod: $ facebook = new Facebook ($ appapikey, $ appsecret); $ user_id = $ facebook-> require_login(); Stamtąd używam FBQL do wycofywania informacji o użytkowniku. Czy te konflikty są w ogóle wywoływane przez funkcję FB.Init()? –

+1

Nie. Klient PHP na Facebooku jest czymś zupełnie oddzielnym od bibliotek JavaScript, ponieważ jest całkowicie serwerowy. Biblioteka PHP i biblioteki JavaScript pozwalają robić te same rzeczy, tylko w różnych środowiskach (tj. Po stronie serwera i po stronie klienta). – zombat

Powiązane problemy