登录&取电子邮件&来自facebook javascript sdk的其他细节

时间:2012-01-19 13:27:15

标签: javascript facebook

我需要使用javascript sdk通过facebook登录并检索用户的电子邮件ID和一般信息。

这是我的代码。请告诉我我哪里出错:

 <script>
    window.fbAsyncInit = function () {
        FB.init({ appId: 'your_app_id', status: true, cookie: true,
            xfbml: true
        });

        FB.getLoginStatus(function (response) {
            if (response.session) {
                greet();
            }
         });
    };
    (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);
    } ());

    function greet() {
        FB.api('/me', function (response) {
            alert('Welcome, ' + response.name + "!");
            alert('Your email id is : '+ response.email);
        }


        );
    }
</script>

1 个答案:

答案 0 :(得分:0)

我认为你错过了getLoginStatus()的登录部分。如果没有登录,则无法以email权限提示用户。这里有一些帮助代码可以帮助您指明正确的方向。

    FB.getLoginStatus(function (response) {
        if (response.status=== 'connected') {
            greet();
        } else {
           FB.login(function(response){/*do something*/},{scope:'email`});
        }
     });

同样response.session适用于旧的oauth,而不是新的oauth2。请参阅:

http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

https://developers.facebook.com/docs/reference/api/permissions/

https://developers.facebook.com/docs/authentication/