Gli amici – Come creare un applicazione per FaceBook (parte 2) - -oldpost-





Gestione amici in facebook - Gennaro Varriale.itNel primo articolo Come creare un applicazione per FaceBook abbiamo visto come creare una semplice applicazione, ora vediamo di scoprire le funzioni che  mette a disposizione facebook per interagire con la propria piattaforma.
Iniziamo con il metodo friends_get che ci permette di avere la lista dei nostri amici.
Sostituire il file index.php del primo articolo con il seguente:
index.php

Nel seguente codice dopo aver caricato la libreria facebook con i dati dell’applicazione (appinclude.php) (vedi articolo precedente) visualizziamo la lista di tutti i nostri amici tramite  friends_get.
Tale metodo restituisce un array con gli uid (identificativi) di tutti gli amici dell’utente corrente. Quindi tramite il metodo foreach, per ogni uid “amico”visualizziamo la sua foto ed il suo nome.
Per farlo utilizziamo il  tag fbml  fb:profile-pic che visualizza la foto dell’utente ed il tag fbml fb:name che ci restituisce il nome dell’utente.  Entrambi accettano come attributo uid , l’identificativo dell’utente (nel nostro caso memorizzato nella variabile $friend).

Per completezza l’uid dell’utente è lo stesso numero che troviamo nella pagina del profilo.
Per esempio l’uid del mio profilo è  640382693 , come nell’indirizzo :  http://www.facebook.com/profile.php?id=640382693

 

63 pensieri su “Gli amici – Come creare un applicazione per FaceBook (parte 2) - -oldpost-

  1. personalmente stò un pò sbattendo la testa per creare una semplice applicazione che mi permetta di inviare notifiche, e di pubblicare sulle bacheche altrui, comunque per a chi possa servire posto il file config.php

  2. Ciao, anzitutto complimenti per il sito e per gli articoli. un argomento non ancora sfiorato sono i gruppi di facebook. come fare ad esempio a collegare la bacheca del proprio gruppo facebook con il proprio sito? Nella rete non sono riuscito a recuperare proprio nulla sull’argomento.

    1. ciao Marco,
      grazie per i complimenti.
      Presto inserirò altri articoli su FB.
      Comunque, per rispondere alla tua domanda, al momento non è possibile integrare la bacheca del gruppo facebook sul proprio sito.

  3. Salve, proseguo nei vari test sulla piattaforma FB. Qualche dritta, almeno per iniziare, in merito alla pubblicazione, tramite l’applicazione, di contenuti sulla bacheca dell’utente loggato? Meglio ancora pubblicazione sulle bacheche degli amici dell’uente in questione? Attendo speranzoso qualche suggerimento anche solo qualche metodo da richiamare (ex. Links.post..). Grazie anticipate

  4. Salve, ho un problema con il tag fb:request-form, ho seguito tutte le istruzioni ho visto una marea di esempi, ma non funziona. Mi compare la schermata dove vedo tutti gli amici da selezionare, ma è come se fosse tutto bloccato perchè anche se seleziono qualche amico e mando l’invito non succede nulla. Gli altri tasti non rispondono all’evento click, ecc… che cosa può essere?

    Utilizzo ASP.NET e la libreria Facebook Developer Toolkit.

    il codice è il seguente:

    string content = “Prova Contenuto… ” + “”;

    content = Server.HtmlEncode(content);

    string inviteForm = “”;
    inviteForm += “”;

    inviteForm += “”;

    prova1.Text = inviteForm + “”;

    Vi ringrazio in anticipo.

    Angelo

    1. non utilizzo ASP, ma il comando fb:request-form non è complesso. Sei sicuro di aver messo l’attributo action con il valore corretto? Ti ricordo che il percorso deve essere assoluto e riferire al canvas.

    1. Attenzione, non ti sconsiglio il loro utilizzo, ho detto di non inserirli direttamente. Prima si carica il valore in una variabile, quindi si controlla la validità e successivamente si passa il valore alla funzione.
      Puoi benissimo utilizzarle direttamente, ti ho solo indicato il metodo corretto per farlo

  5. Ciao Gennaro.
    Ho realizzato un’applicazione e sto provando a mandare una notifica a un mio amico che non l’ha aggiunta. Ho letto che user_to_user lo permette. Il codice che uso è:
    if($facebook->api_client->notifications_send((int)$_POST[destinatario], $_POST[testo_notifica])){messaggio di successo;}else{insuccesso;}
    Indovina un po’? Non funziona.
    Come mai?

  6. Un’ultima cosa: nel momento in cui ottengo l’ID, a che cosa mi serve Feed.registerTemplateBundle?

    Solo ad ottenere quell’ID via codice? Ma leggendo la guida e vedendo alcuni esempi (http://wiki.developers.facebook.com/index.php/Feed.registerTemplateBundle)sembra che i parametri accettati siano tanti… forse si possono registrare piu ID per applicazione e identificarli univocamente passando come parametro il tipo di template associato al feed di cui vogliamo estrarre l’ID?

  7. Mi sono accorto ora che il messaggio precedente non si visualizza correttamente a causa delle parentesi angolari.

    Cmq la funzione api_client->feed_publishUserAction(); che parametri prende?

    1. inserire l’email il filtro antispam fallirebbe.
      Ultimo aiuto ;) Devi prima creare il feed da pannello di controllo, ti restituira un ID, che sarà il primo parametro della funzione. Il secondo è l’array contenente i valori da passare al template creato.
      Penso che ti basti per intuirne il funzionamento e nelle documentazione estrapolarti il codice corretto. Buon lavoro!

  8. @Gennario Varriale:

    La funzione che mi hai indicato fa anche uso di Feed.registerTemplateBundle ma non so come usarla, non ho trovato spiegazioni chiare, puoi farmi tu un esempio?

  9. Ho provato
    print “Messaggio di prova “;

    e non da errore ma non appare niente nel profilo, forse devo aspettare?

    Nota:
    La necessità di dover scrivere sempre nome ed email e la cancellazione del messaggio nel caso in cui si dimentica di farlo, rende seccante la discussione.

  10. Ma il codice FBML dove va inserito? Mi da errore, dice che è stato rilevato un “api_client->feed_publishUserAction();
    Grazie

  11. Salve,

    ho realizzato un’applicazione facebook (Master Mind) che però non fa uso di FBML.

    In che modo posso farsì che quando l’utente usi la mia applicazione, nella sua bacheca appaia il messaggio [Nome Utente] ha giocato ah Master Mind?

    Eventualmente via FBML che API dovrei usare?

    Se volete vedere l’applicazione la trovate qui:

    http://axeryon.altervista.org/php5/master/index.php

    Grazie

  12. Gennaro
    se io volessi pubblicare un link della mia pagina web su facebook, ovvero farla pubblicare nel profilo dei miei amici vorrei che comparisse di default una certa parte di testo a mia scelta e l’immagine che voglio io. come faccio?

  13. @Gennaro

    Grazie per la risposta.
    Ho provato il seguente codice, come mi hai suggerito ma l’errore rimane.
    ERRORE:
    Errors while loading page from application
    Runtime errors:fb:profile-pic: Invalid uid for fb:profile_pic (0)

    CODICE:

    $friends = $facebook->api_client->friends_get();
    if (is_array($friends)){
    foreach ($friends as $friend) {
    echo ” !”;
    echo ” !”;
    echo “”;
    }
    } else {echo “error”;}

  14. Ciao. Ho creato una semplice applicazione per ricevere la lista di amici di un utente.
    L’applicazione funziona:visualizza sia le foto che il nome di ogni amico.
    Il problema è che, se l’utente non ha amici, viene rilevato un errore in quanto non viene passato al metodo che visualizza le foto l’uid dell’amico.
    Il codice è questo:

    ….
    $friends = $facebook->api_client->friends_get();

    foreach ($friends as $friend) {
    echo ” !”;
    echo ” !”;

    }

    echo “”;

    Ho provato aggiungendo anche
    if($friends=””)
    echo”non hai amici”;
    else {

    foreach ($friends as $friend) {
    echo ” !”;
    echo ” !”;

    }
    }

    echo “”;

    ma ricevo sempre questo errore:

    Errors while loading page from application
    Runtime errors:
    fb:profile-pic: Invalid uid for fb:profile_pic (0)

    Qualcuno di voi mi potrebbe aiutare?grazie mille

  15. esempio: voglio pubblicare un video sulla bacheca,ma ha dei contenuti forti,non voglio che venga visualizzato dai miei nipoti o da parenti stretti,è possibile applicare delle restrizioni?
    Se non si può fare sulla bacheca spiegami come farlo con un’ applicazione,ad es a che serve YOU TUBE BOX?ho visto che nelle sue modifiche,nella sezione profilo si può creare una lista personalizzata di amici ma non mi è chiaro a quale scopo.
    Grazie

    1. YouTube Box permette di inserire un video nel tuo profilo (con molte opzioni). Non ho mai installato quest’applicazione e quindi non conosco lo scopo della lista. Prova a caricare uno di esempio, crea una lista e vedi se anche gli altri vedono il video.
      In genere,non puoi applicare nessun tipo di restrizione su porzioni del tuo profilo.
      Creare un’applicazione a tal scopo significa crearne una che :
      – accetta una lista di amici.
      – ti fa caricare i video
      – in una pagina dell’applicazione vengono mostrati i contenuti solo se si appartiene a quella lista, altrimenti mostra un contenuto alternativo.

  16. Gennaro forse tu mi puoi aiutare,non è molto inerente ma sto cercando di scoprire,se tramite un’ applicazione è possibile creare una lista personalizzata di amici,ai quali inviare ad esempio il link di un video e che di conseguenza compaia solo a loro sulla bacheca e non agli altri.
    Ho visto le liste di amici ma è possibile solo inviare messaggi privati e quindi non poter interagire e commentare tra tutti.

    1. Non mi è chiaro, cosa intendi per un link video che si vede solo su alcune “bachece”, dato che esse sono pubbliche.
      Comunque puoi realizzare un applicazione che gestisce una “nuova bacheca” privata visibile solo a persone appartenente ad un gruppo di amici.

  17. Scusate una domanda , temo d’aver perso un passaggio ma non risco a capire quale.
    Come posso inserire la funzione “Aggiungi al profilo” una volta che han completato un eventuale quiz o test ? Sia nella versione precompilata di fb sia in un eventuale applicazione creata da 0 ?

    grazie in anticipo :)

  18. @emanuele: di precotto in programmazione c’è poco, ma si usa il tag fb:request-form in questo caso.
    @Luca Gorini: mi fa piacere ;)
    @simmons: devi sostituire le strighe es. ‘profile_main’ e ‘profile’ con il codice fbml. Non puoi inserire codice php in profilo, solo fbml/html.

  19. grazie per l’aiuto.
    sono quasi arrivato alla meta. ora l’applicazione funziona solo che quando l’aggiungo al profilo….non mostra nulla a parte: profile_main

    ho dovuto usare:$facebook->api_client->profile_setFBML(session_key, uid, ‘profile’, ‘profile_action’, ‘mobile_profile’, ‘profile_main’);

    come faccio a dire all’applicazione qual’è il codice da visualizzare nella pagina del profilo??
    cioè la mia index è composta di php e html…

    grazie mille.

  20. ma per invitare amici ad usare la tua applicazione esiste un tool “pre cotto” interno alle librerie di facebook o te lo devi costruire tu? grazie

  21. @tutti: Cerco con i miei articoli di avvicinare alla programmazione o estendere le proprie conoscenze. Non chiedetemi aiuti non inerenti ai contenuti degli articoli. Se avete richieste professionali, contattatemi privatamente.

  22. Gennaro,
    vorrei postare un tutorial per inziare a smanettare sulle applicazioni Facebook per renderle dinamiche. Per renderle dinamiche si sa occorre scrivere e leggere le tabelle. Io posto ora il codice per scrivere sulla tabella mysql.

    Il programma registra su una tabella l’ora dell’accesso e l’id dell’utente che visualizza una pagina della applicazione. Il campo count della tabella contatore, invece, è un autoincrement e lo uso come contatore degli accessi.

    Questo è il codice della pagina index.php:

    require_login();

    // Apertura database
    $link = mysql_connect($db_host,$db_username,$db_password); if (!$link) {die(‘Could not connect: ‘ . mysql_error());} mysql_select_db($databse_name);

    // Scrittura sul database
    mysql_query(“INSERT INTO contatore (data,username) values (‘$data’,’$user’)”);

    // Lettura database
    $sql = ‘SELECT * FROM contatore ORDER BY count DESC LIMIT 0 , 1’;
    $result = mysql_query($sql);
    $row = mysql_fetch_assoc($result);
    echo “$row[count] visite”;

    // Scrivi da qui in avanti la tua applicazione

    // Chiusura database
    mysql_close($link);
    ?>

    Ora posto il contenuto di config.php chiamato all’inizio della pagina index:

    Ora posto il codice per creare la tabella con mysql

    CREATE TABLE contatore (
    count int(11) NOT NULL auto_increment,
    data varchar(16) NOT NULL default ”,
    username varchar(15) NOT NULL default ”,
    PRIMARY KEY (count)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=275 ;

    Tutto qui è il gioco è fatto (ricordatevi di postare anche il client come spiegato dai precedenti post di Gennaro).

    Postate anche voi i vostri codici per fare crescere la comunità.

    Chiedo a tutti e soprattutto a Gennaro se mi può aiutare nel fare l’upload di immagini da applicazioni Facebook. Tutti i codici che trovo in rete non mi funzionano. Puoi postare il codice per fare l’upload da una form PHP con il campo file?

    Ciao
    Carlo

  23. Ottimo lavoro Gennaro,
    grazie mille per i tuoi tutorial.

    Sei l’unico sviluppatore italiano di applicazioni Facebook e mi auguro che le lezioni aumentino.

    Ciao e continua così
    “Ti stimo fratello”

    Ciao

Rispondi a Fabrizio Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *