2009-08-09 5 views
6

Sto lavorando alla scrittura di una piccola applicazione Facebook solo per divertimento e apprendimento. Sfortunatamente, la documentazione per sviluppatori di Facebook, il wiki e i campioni lasciano molto a desiderare.È possibile utilizzare FBML all'interno di un'app Facebook iFrame?

Se la mia applicazione è un'app iFrame (PHP), posso usare FBML all'interno della pagina o devo utilizzare XFBML? Se ho bisogno di usare XFBML, c'è un repository di frammenti da qualche parte che potrei guardare attraverso?

Sto cercando di aggiungere una casella di selezione di amici. Ad esempio, benvenuto nell'app, scegli un oggetto, invialo a 20 amici.

Si potrebbe pensare che un selettore di amici sia un componente di riserva per le app di Facebook, ma apparentemente no.

Posso usare FBQL e CSS per definire il mio, ma non sarebbe bello standard e coerenza?

Esiste una guida definitiva per gli sviluppatori di app di Facebook, semplice da seguire, che copre i tag FBML, i tag XFBML e cosa succede con gli esempi?

risposta

8

Penso che in ogni risposta che faccio ad una domanda su Facebook, menziono quasi che "la documentazione di Facebook fa schifo, quindi non sentirti male se non riesci a trovare qualcosa".

La risposta è sì, si può sicuramente usare FBML in un'applicazione IFrame. Lo faccio di routine Facebook sta sfocando le linee tra le app IFrame e le app FBML con XFBML, il che è fantastico. Fondamentalmente, XFBML è un semplice FBML, tranne per il fatto che viene analizzato e reso tramite le librerie javascript di Facebook Connect. Per questo motivo, si vede un po 'di ritardo prima del rendering di un controllo FBML, ma generalmente questo non è un grosso problema.

Ti darò un esempio di caricamento di un selettore di amici direttamente da una delle mie app IFrame. Vedrai che è circondato dai tag fb:serverfbml, che devi rendere diversi dei più complicati tag FBML. Gli articoli FBML che non hanno un tag fb: serverfbml intorno a loro sono elencati su XFBML wiki page.

In ogni caso, un certo codice:

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

citazioni Escaping diventa un po 'complicato con tutti i tag annidati, in modo da avere a guardare questo. Puoi vedere il mio esempio da un'app PHP e ho lasciato una chiamata di escape htmlspecialchars() lì solo per scopi illustrativi (anche se quella particolare stringa non ha bisogno di escape).

In ogni caso, se Facebook Connect è già installato per la tua app IFrame, allora questo dovrebbe funzionare con un po 'di tweaking. Se non hai ancora Facebook Connect, segui le istruzioni di Rendering XFBML su XFBML wiki page.

+0

Zombat, grazie per le informazioni. Questo, tuttavia, porta ancora un'altra domanda. Attualmente sto usando la libreria client PHP e ho il codice tradizionale $ facebook = nuovo Facebook ($ appapikey, $ appsecret); $ user_id = $ facebook-> require_login(); Da lì sto utilizzando FBQL per recuperare le informazioni dell'utente. Si verificano conflitti con le chiamate FB.Init()? –

+1

No. Il client PHP di Facebook è qualcosa di completamente separato dalle librerie Javascript, poiché è totalmente lato server. La libreria PHP e le librerie Javascript consentono di fare le stesse cose, solo in ambienti diversi (ad esempio lato server e lato client). – zombat