Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    Aiuto con le API di Facebook

    Salve a tutti,

    come capirete da titolo stò cercando di creare una mia piccola app che interagisce con le api di facebook.

    Stò incontrando però dei problemi nel creare funzioni utili allo scopo, in particolare quelle proprie dei facebook. Ecco un esempio di quello che ho creato e di cosa nn funziona:

    codice:
    jQuery(document).ready(function () {
    
    var utility = {}
    
    utility.me = function(){
        FB.api("/me", function (response) {
            if (response && !response.error) {
                     return response;
    }
        });
    }//SDK Facebook
    jQuery.ajaxSetup({cache: true});
    jQuery.getScript('//connect.facebook.net/en_US/sdk.js', function () {
        FB.init({
            appId: 'xxxxxxxxxx',
    version: 'v2.3' // or v2.0, v2.1, v2.0
    });
    jQuery('#loginbutton,#feedbutton').removeAttr('disabled');
    });
    setTimeout(function () {
        FB.getLoginStatus(function (response) {
            if (response.status === 'connected') {
                //Prendo info dell'user collegato
    utility.me();
    } else {
                jQuery(".gc-login-button").show();
    }
        });
    
    }, 2000);
    
    .......
    In pratica quando chiamo la funzione utility.me mi viene restituito undefined. Leggendo quà e là pare sia un problema di chaimata asincrona ma come dovrei fare la chiamata a quella funzione? o cmq se poteste darmi un consiglio per procedere e continuare atenere tutto ordinato, sarebbe gradito.

    Grazie in anticipo !

  2. #2
    La prima cosa da fare per usare le API di FB è quella di registrarsi al sito facebook developers:
    https://developers.facebook.com/
    secondo passo creare una applicazione e ricevere un' AppID.
    Poi puoi cominciare a fare tutti i test che vuoi.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Grazie, ma in effetti questi passaggi preliminari li ho già fatti, il mio è proprio un punto di vista tecnico organizzativo. pe quello che ne so fare chiamate asincrone con queste api mi costringe aad usare la funzione di callback ma organizzativamente diventa tutto un casino se per ogni evento devo fare una funziona del genere, esce un codice stra-annidato. Esiste un'alternativa? tra l'altro credo nn riguardi solo le api di facebook ma l'asincrono in generale.

    Grazie in anticipo !

  4. #4
    In JavaScript si usano spesso le funzioni annidate.
    Prova ad usare un editor che evidenzia la sintassi come adobe brackets:

  5. #5

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Ciao, grazie, io uso phpstorm ed è ottimo per gli annidamenti( molto simile a quello da te consigliato ), però io cercavo proprio una soluzione tecnica e pulita per scrivere chiamate asincrone in maniera semplice evitando annitamenti eccessivi e funzioni di callback, ti posto il codice da me viluppato ( sono andato avanti ) e forse capirai meglio:

    codice:
    jQuery(document).ready(function () {
    
        //Variabile globale
    var utility = {}
        //Funzione che chiama i gruppi associati all'utente
    utility.render_group = function () {
                FB.api("/me",function (response) {
                        if (response && !response.error) {
                           callback(response,"group");
    }
                    }
                );
    }
    
        function callback(response, type) {
            //In questa if creo l'elenco dei gruppi dell'utente
    if( type == "group" ){
                FB.api(
                    "/"+response.id+"/groups",
    function (gruppi) {
                        if (gruppi && !gruppi.error && gruppi.data.length > 0) {
                            console.log(gruppi);
    var list = "<ul class='list-contaienr'>";
    jQuery.each(gruppi.data,function(index,value){
                                list += "<li class='item-group' data-id='"+gruppi.data[index].id+"'>";
    list += "<span class='group-title'>"+gruppi.data[index].name+"</span>";
    list += "</li>";
    });
    list += "</ul>";
    jQuery(".list-container").html(list);
    jQuery(".sharepost").show();
    }
                    }
                );
    }
        }
        
        //SDK Facebook
    jQuery.ajaxSetup({cache: true});
    jQuery.getScript('//connect.facebook.net/en_US/sdk.js', function () {
            FB.init({
                appId: '465653533595787',
    version: 'v2.3' // or v2.0, v2.1, v2.0
    });
    });
    setTimeout(function () {
            FB.getLoginStatus(function (response) {
                if (response.status === 'connected') {
                    //Prendo info dell'user collegato
    utility.render_group();
    } else {
                    jQuery(".gc-login-button").show();
    }
            });
    
    }, 2000);
    
    //Connessione a facebook
    jQuery(document).on("click", ".gc-login-button", function () {
            FB.login(function () {
    
            }, {scope: 'email,user_friends,user_groups,publish_actions'});
    });
    .......................
    Come puoi notare quando chiamo la funzione utility.render_group sono costretto ad utilizzare la funzione callback() per vedere il risultato (se uso return mi torna undefined) e nel cercare di tenere ordinato il codice passo a callback anche un secondo parametro per distinguere quali sono le operazioni da fare, così non devo fare una funzione di callback per ogni chiamata asincrona. Anche così però mi sembra tutto un po' incasinato, io volevo sapere se esistono soluzioni migliori e più ordinate di questa!

    Grazie in anticipo !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.