5

ユーザーが 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で行いたいと思います。クリック時にこの情報をフォームに入力する関数を作成する必要があります。何か案は?

4

2 に答える 2

7

登録プラグインを使用してみませんか。多くの作業を節約できます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() を呼び出します。

于 2012-10-29T16:04:14.933 に答える
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" />
于 2012-10-29T16:59:10.767 に答える