2012-10-29 15 views
5

Vorrei consentire agli utenti di premere un pulsante sulla mia pagina che riempirà automaticamente un modulo con il loro nome, cognome e indirizzo e-mail, a condizione che siano collegati a Facebook. Se non lo sono, allora il modulo di accesso di Facebook dovrebbe apparire come popup, consentendo all'utente di accedere, e quindi dovrebbe avvenire il riempimento automatico.Compila modulo utilizzando i dati di Facebook

Sono stato in giro con questo nella console di test javascript. So che avrò bisogno di chiamare il first_name, last_name ed email, ma non sono sicuro di come popolare i miei campi modulo con queste informazioni.

FB.api(
     { 
     method: 'fql.query', 
     query: 'SELECT first_name, last_name, email FROM user WHERE uid=' + response.authResponse.userID 
     }, 

Mi piacerebbe farlo in javascript. Devo creare una funzione che compili un modulo con queste informazioni al clic. Qualche idea?

risposta

8

Perché non si utilizza il plug-in di registrazione. Ti farà risparmiare un sacco di lavoro https://developers.facebook.com/docs/plugins/registration/

Nel caso in cui desideri avere un modulo personalizzato. Dovresti prendere il permesso dell'utente e ottenere i suoi dettagli. È possibile utilizzare il seguente codice:

<div id="fb-root"></div> 
<script src="https://connect.facebook.net/en_US/all.js"></script> 
FB.init({appId: 'XXXXXXXXXXXXX',status : true,xfbml : true, cookie: true ,oauth : true}); 


function login(){ 
     FB.getLoginStatus(function(response) { 
     // checks if user already authorized 
        if (response.status === 'connected') { 
          FB.api('me?fields=id,name,email', function(user) { 
            if(user != null) { 
                   username = user.name; 
                   uid = user.id; 
                   email = user.email; 
                  } 
           }); 

        } else { 
     // If user is not authorized call FB.login for pop up window for authorization , scope defines list of persmission requested with user 
        FB.login(function(response) { 
          if (response.authResponse.accessToken) {  
              FB.api('me?fields=id,name,email', function(user) { 
                if(user != null) { 
                   username = user.name; 
                   uid = user.id; 
                   email = user.email; 
                  } 
                 }) 
                } 
               }, {scope:'email'}); 
        } 

       }); 
    } 

Si chiama login() con la semplice pressione del pulsante.

+0

ho avuto uno sguardo a questo, ma ho già una forma di lavoro in uso, così invece di aggiungere un altro modulo vorrei solo per precompilare questo modulo con i dati di Facebook con la semplice pressione di un pulsante. –

+0

Ho modificato la mia risposta per includere il codice per ottenere i dettagli dell'utente senza plug-in di registrazione. –

0

Si può provare qualcosa di simile:

<script> 
     FB.api(
     { 
     method: 'fql.query', 
     query: 'SELECT first_name, last_name, email FROM user WHERE uid= ' + response.authResponse.userID}, function (data) { 
     if (data && data[0]) { 
      if (data[0].first_name) { 
       document.getElementById('user_first_name').value = data[0].first_name; 
      } 
      if (data[0].last_name) { 
       document.getElementById('user_last_name').value = data[0].last_name; 
      } 
      if (data[0].email) { 
       document.getElementById('user_email').value = data[0].email; 
      } 
     } 

     }); 
</script> 

<input id="user_first_name" /> 
<input id="user_last_name" /> 
<input id="user_email" /> 
+0

se "response.authResponse.userID" è un ID utente valido. –

Problemi correlati