使用Facebook登录按钮插件获取用户基本信息?

Yas*_*ahu 13 facebook facebook-javascript-sdk

这里我使用的是Facebook登录按钮插件javascript sdk

我可以通过使用上面的方式成功登录和注销.

当第一次用户通过身份验证过程时,我需要存储用户基本信息,即Facebook登录名,电子邮件在我的数据库中.

请建议我如何做到这一点.

<p><fb:login-button autologoutlink="true"></fb:login-button></p>


    <div id="fb-root"></div>
    <script>
        window.fbAsyncInit = function () {
            FB.init({ appId: '123456', status: true, cookie: true,
                xfbml: true
            });
        };


        (function () {
            var e = document.createElement('script');
            e.type = 'text/javascript';
            e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
            e.async = true;
            document.getElementById('fb-root').appendChild(e);
        } ());
    </script>
Run Code Online (Sandbox Code Playgroud)

Way*_*Kao 14

订阅活动 auth.login.如果你这样做,Facebook会在登录后调用你的处理程序.

在该处理程序中,用于FB.api调用Graph API以获取所需的任何信息.例如/me,如第二个示例中所示调用将获得有关登录用户的基本信息.

现在您拥有JavaScript中的所有数据.要将其发送到您的服务器,请执行一个简单的旧XMLHttpRequest/AJAX请求.你的JavaScript库可能很容易 - 在jQuery中这是jQuery.ajax() - 但最坏的情况是你可以直接使用XHR.

现在,您可以在服务器上获得数据,并且可以执行任何操作,例如将其存储在数据库中.如果您只想存储一次数据,只需检查您是否尚未存储有关该用户ID的信息.

  • 根据@Jon Watte的回答,请注意,通过这种方式通过AJAX发送的用户信息是不可信任的.最好只将Facebook用户ID和访问令牌发送到服务器,并在服务器端API调用中查找用户信息. (10认同)

Jub*_*uff 5

也可以使用PHP SDK和JS SDK的组合,后者执行登录,前者在服务器上存储数据.就像是:

<?php
require_once 'config.php';
require_once 'lib/facebook.php';

$facebook = new Facebook(array(
    'appId' => FB_APP_ID,
    'secret' => FB_APP_SECRET,
));


?>
<!DOCTYPE html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<body>

<div id="fb-root"></div>
<script>
    window.fbAsyncInit = function () {
        FB.init({
            appId:'<?php echo $facebook->getAppID() ?>',
            cookie:true,
            xfbml:true,
            oauth:true
        });
        FB.Event.subscribe('auth.login', function (response) {
            window.location = "showUser.php"; //redirect to showUser.php on Login
        });
        FB.Event.subscribe('auth.logout', function (response) {
            window.location.reload();
        });
    };
    (function () {
        var e = document.createElement('script');
        e.async = true;
        e.src = document.location.protocol +
            '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
    }());
</script>
<div class="fb-login-button" data-show-faces="true" data-width="200"
     data-max-rows="1"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

showUser.php你有类似的东西:

<?php
#showUser.php
require_once 'config.php';
require_once 'lib/facebook.php';

$facebook = new Facebook(array(
    'appId' => FB_APP_ID,
    'secret' => FB_APP_SECRET,
));

$user = $facebook->getUser();

if($user)
{
    if ($user) {
        try {
            // Proceed knowing you have a logged in user who's authenticated.
            $user_profile = $facebook->api('/me');
            var_dump($user_profile); //You can now save this data
        } catch (FacebookApiException $e) {
            echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
            $user = null;
        }
    }
}

?>
Run Code Online (Sandbox Code Playgroud)