2009-05-04 5 views

risposta

16

Sì, questo è sicuramente possibile, ma è necessario utilizzare Facebook Connect e XFBML. In particolare, si desidera utilizzare il tag fb:serverfbml per ottenere fb: selettore di amici che funziona. Ho un'app iframe in cui utilizzo tutto questo e il fb: selettore di amici nel contesto standard "invita gli amici alla tua app" e funziona alla grande.

Ecco il corpo del mio file di modello, che ottiene in uscita all'interno del corpo del mio iframe:

<fb:serverfbml style="width: 650px;"> 
<script type="text/fbml"> 
    <fb:fbml> 
     <fb:request-form 
      action="http://example.com/invite/sent" 
      method="POST" 
      invite="true" 
      type="My App" 
      content="Try out my app! 
       <fb:req-choice url='http://your-facebook-canvas-url' 
       label='<?php echo htmlspecialchars("Accept button text",ENT_QUOTES); ?>' 
       /> 
      " > 
      <fb:multi-friend-selector 
       showborder="false" 
       actiontext="Invite your friends to try My App." 
       exclude_ids="<?php echo $excludeIds; ?>" 
       rows="3" 
      /> 
     </fb:request-form> 
    </fb:fbml> 
</script> 
</fb:serverfbml> 

Nel footer della pagina, ho il codice standard Facebook Connect, che caricherà e rendere il fb: contenuti serverfbml:

<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script> 
<script type="text/javascript"> 
    FB_RequireFeatures(
     ["CanvasUtil"], 
     function(){ 
      FB.XdComm.Server.init('/xd_receiver.html'); 
      FB.CanvasClient.startTimerToSizeToContent(); 
     } 
    ); 
</script> 

<script type="text/javascript"> 
    FB_RequireFeatures(["XFBML"], function(){ FB.Facebook.init("Your Facebook API Key", "/xd_receiver.html"); }); 
</script> 

Questo dovrebbe essere tutto ciò che serve (inserire le proprie opzioni se del caso, ovviamente). Dovrai configurare Facebook Connect affinché funzioni con un file di ricevitore interdominio. Suggerisco di seguire lo rendering XFBML steps.

+0

Tu dici che devi utilizzare Facebook Connect. Dalla documentazione sembrano esserci due link a FeatureLoader.js uno con Connect e uno senza Connect nell'URL. Non sono sicuro di cosa fare di questo e molto confuso. – f4hy

+2

Mentre la risposta suggerita da Zombat funziona, dovresti usare il nuovo [JS SDK] (http://developers.facebook.com/docs/reference/javascript/) invece del più vecchio JS SDK utilizzato dal suo codice. XFBML rimarrà lo stesso, ma il codice JS apparirà diverso. Ecco un esempio dal vivo: http://apps.facebook.com/fbrelll/xfbml/fb:server-fbml-multi-friend-selector. – daaku

+0

@daaku - sì, questa domanda è stata posta/risposta più di un anno fa, quindi non è più aggiornata. – zombat

3

Dato che ci sono molte domande sul selettore di amici all'interno di un iframe.

Ragazzi la sintassi corretta è ora <fb:serverfbml width="650px">

9

la domanda in questa discussione è ancora rilevante, ma la risposta non è aggiornato. Dovresti usare il nuovo javascript SDK. Questo dovrebbe sostituire il secondo frammento di codice inviato da zombat

<script src="http://connect.facebook.net/en_US/all.js"></script> 
<script type="text/javascript"> 
    FB.init({appId: 'your app id', 
     status: true, 
     cookie: true, 
     xfbml: true}); 
    FB.Event.subscribe('auth.sessionChange', function(response) { 
    if (response.session) { 
     // A user has logged in, and a new cookie has been saved 
    } else { 
     // The user has logged out 
    } 
    }); 
</script> 

maggiori informazioni qui: http://www.clickonchris.com/2010/11/facebook-javascript-sdks/

0

uno dei maggiori e punto importante che viene perso è che molti di voi (me compreso) bastone in script un po 'ovunque. .. ma il file load.js "FB" deve essere caricato IMMEDIATAMENTE dopo il tag del corpo.

almeno questo è quello che ho trovato per far funzionare tutto e humm di conseguenza. L'ho trovato su un post su un altro sito (non ero sicuro se avrei dovuto postarlo qui o no ...) ma è arrivato dopo aver trascorso innumerevoli ore, facendo il suddetto summenzionato - così come seguendo ogni altro 1,2, 3 step pugno in ricevendo l'iframe a misura correttamente ...

e ora ho ottenuto di lavorare :)