2012-10-29 131 views
5

我希望允許用戶按下我的頁面上的一個按鈕,它將自動填寫表單的名字,姓氏和電子郵件地址,前提是他們已登錄到Facebook。如果他們不是,那麼Facebook登錄表單應該彈出,允許用戶登錄,然後自動填充應該發生。使用Facebook數據填寫表格

我一直在這個在javascript測試控制檯搞亂。我知道我需要調用first_name,last_name和email,但我不確定如何使用此信息填充我的表單字段。

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

我想用javascript做到這一點。我需要創建一個函數,通過單擊這些信息來填充表單。有任何想法嗎?

回答

8

爲什麼你不使用註冊插件。這將爲您節省大量的工作https://developers.facebook.com/docs/plugins/registration/

如果您想要自定義表單。你必須獲得用戶的許可並獲得他的詳細信息。您可以使用以下代碼:

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

       }); 
    } 

您在按下按鈕時調用login()。

+0

我也看看,但我已經在使用一個工作表,這樣反而增加另一種形式我只是想預填充此在按下按鈕的同時使用臉書數據。 –

+0

我編輯了我的答案,包括代碼來獲取用戶詳細信息,而無需註冊插件。如果「response.authResponse.userID」是有效的用戶標識,則爲 –

0

你可以嘗試這樣的事情:

<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

。 –