2012-10-29 32 views
5

Chciałbym umożliwić użytkownikom naciśnięcie przycisku na mojej stronie, który automatycznie wypełni formularz swoim imieniem, nazwiskiem i adresem e-mail, pod warunkiem, że są zalogowani na Facebooku. Jeśli tak nie jest, to formularz logowania na Facebooku powinien zostać wyskakujący, umożliwiając użytkownikowi zalogowanie się, a następnie powinno nastąpić automatyczne wypełnianie.Formularz wypełnienia za pomocą danych z Facebooka

Zaskakuje mnie to w konsoli testowej javascript. Wiem, że będę musiał zadzwonić do first_name, last_name i e-mail, ale nie jestem pewien, jak wypełnić moje pola formularza tymi informacjami.

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

Chciałbym zrobić to w javascript. Muszę utworzyć funkcję, która wypełni formularz tymi informacjami o kliknięciu. Jakieś pomysły?

Odpowiedz

8

Dlaczego nie używasz wtyczki rejestracji. Pozwoli Ci to zaoszczędzić sporo pracy https://developers.facebook.com/docs/plugins/registration/

W przypadku, gdy chcesz mieć niestandardowy formularz. Będziesz musiał wziąć zgodę od użytkownika i uzyskać jego dane. Można użyć następującego kodu:

<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'}); 
        } 

       }); 
    } 

zadzwonić login() w prasie swojego przycisku.

+0

miałem spojrzeć na to, ale mam już formę pracy w użyciu, więc zamiast dodawania inną formę Chciałbym tylko do tego wstępnie wypełnić Formularz z danymi na Facebooku za naciśnięciem jednego przycisku. –

+0

Edytowałem swoją odpowiedź, aby dołączyć kod, aby uzyskać dane użytkownika bez wtyczki rejestracyjnej. –

0

Można spróbować coś takiego:

<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

, jeśli "response.authResponse.userID" jest prawidłowym ID użytkownika. –