Facebook SDK 2.8不提供电子邮件地址

时间:2017-06-07 06:29:42

标签: facebook sdk

我正在尝试为我的网站实施FacbookSDK 2.8,以下是代码的简化版本。

 <button onclick="logout()">Logout</button>
    <button onclick="login()">LogIn</button>
    <script>
        (function(d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) return;
            js = d.createElement(s);
            js.id = id;
            js.src = "//connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));
        setTimeout(() => {
            window.fbAsyncInit = () => {
                FB.init({
                    appId: 'xxxxxxx', //My app id here
                    cookie: true, // enable cookies to allow the server to access 
                    // the session
                    xfbml: true, // parse social plugins on this page
                    version: 'v2.8' // use graph api version 2.8
                });
                checkFBLoginStatus();
            }
        })

        function checkFBLoginStatus() {
            FB.getLoginStatus((response) => {
                console.log(response)
            });
        }

        function logout() {
            FB.logout(function(response) {
                console.log(response)
            })
        }

        function login() {
            FB.login(function(response) {
                console.log(response)
                FB.api('/me?fields=id,email,name', function(response) {

                    console.log(JSON.stringify(response));
                });
            }, {
                scope: 'email'
            })
        }


        function onLoginSuccess() {
            FB.getLoginStatus(function(response) {
                console.log(response)
            })
        }
    </script>

我在退出和登录时收到回复

以下是我的问题

  1. 在FB.api电话上我只获取ID和姓名,而我需要用户电子邮件设置为唯一的用户标识符。

  2. 我什么时候可以达到未经授权的条件。如果我登录,我将获得“连接”状态,如果我退出,则“未知”状态。我无法重现未经授权的条件,因此我可以为其编码。

1 个答案:

答案 0 :(得分:0)

您应该使用用户的ID来识别他,而不是电子邮件。用户无需收到电子邮件,也可以使用自己的电话号码登录。确保在登录过程/弹出窗口中要求您提供电子邮件权限。另外,请改用此表单:

FB.api('/me', {fields: 'id,email,name'}, function(response) {
    console.log(JSON.stringify(response));
});