2009-08-09 13 views
6

Je travaille sur l'écriture d'une petite application Facebook juste pour le plaisir et l'apprentissage. Malheureusement, la documentation du développeur sur Facebook, le wiki et les exemples laissent beaucoup à désirer.Peut-on utiliser FBML dans une application Facebook iFrame?

Si mon application est une application iFrame (PHP), puis-je utiliser FBML dans la page ou dois-je utiliser le fichier XFBML? Si j'ai besoin d'utiliser XFBML, y a-t-il un référentiel d'extraits que je pourrais parcourir?

Je cherche à ajouter un sélecteur d'amis. Par exemple, bienvenue dans l'application, choisissez un objet, envoyez-le à 20 amis.

On pourrait penser qu'un sélecteur d'amis serait un composant de stock pour les applications Facebook, mais apparemment pas.

Je peux utiliser FBQL et CSS pour définir le mien, mais les standards et la cohérence ne seraient-ils pas agréables?

Existe-t-il un tutoriel de développeur d'applications Facebook définitif, à partir de rien, qui couvre les balises FBML, les balises XFBML et ce qui va avec des exemples?

Répondre

8

Je pense que dans chaque réponse que je fais à une question Facebook, je mentionne à peu près que "la documentation de Facebook est nulle, alors ne vous sentez pas mal si vous ne trouvez pas quelque chose."

La réponse est oui, vous pouvez certainement utiliser FBML dans une application IFrame. Je le fais régulièrement. Facebook estompe les limites entre les applications IFrame et les applications FBML avec XFBML, ce qui est génial. Fondamentalement, XFBML est juste FBML régulier, sauf qu'il est analysé et rendu via les bibliothèques javascript de Facebook Connect. À cause de cela, vous voyez un peu de retard avant qu'un contrôle FBML soit rendu, mais généralement ce n'est pas un gros problème.

Je vais vous donner un exemple de chargement d'un sélecteur d'amis directement depuis l'une de mes applications IFrame. Vous verrez qu'il est entouré de balises fb:serverfbml, dont vous avez besoin pour rendre plusieurs balises FBML plus compliquées. Les éléments FBML qui n'ont pas besoin d'un fb: tag serverfbml autour d'eux sont répertoriés sur le XFBML wiki page.

Quoi qu'il en soit, un code:

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

citations Échapper devient un peu délicat avec toutes les balises imbriquées, de sorte que vous devez regarder cela. Vous pouvez voir que mon exemple provient d'une application PHP, et j'ai laissé un appel d'échappement htmlspecialchars() juste à titre d'illustration (même si cette chaîne particulière n'a pas besoin d'être échappée).

De toute façon, si Facebook Connect est déjà installé pour votre application IFrame, cela devrait fonctionner avec un peu de peaufinage. Si vous n'avez pas encore connecté Facebook Connect, suivez les instructions Rendu XFBML sur le XFBML wiki page.

+0

Zombat, merci pour l'info. Ceci, cependant, soulève encore une autre question. J'utilise actuellement la bibliothèque client PHP et j'ai le code traditionnel $ facebook = new Facebook ($ appapikey, $ appsecret); $ user_id = $ facebook-> require_login(); De là, j'utilise FBQL pour récupérer les informations utilisateur. Est-ce qu'il y a un conflit avec les appels FB.Init()? –

+1

Non. Le client PHP de Facebook est complètement séparé des bibliothèques Javascript, car il est totalement serveur. La bibliothèque PHP et les bibliothèques Javascript vous permettent de faire la même chose, seulement dans des environnements différents (côté serveur et côté client). – zombat

Questions connexes