Facebook身份验证 - 添加访问电子邮件地址的权限

时间:2012-05-16 06:31:45

标签: email authentication permissions facebook-javascript-sdk

这可能是一个基本问题。 我的英语也很差......

我有一个需要Facebook登录的网络服务。 使用JavaScript SDK,我可以获取用户的基本信息,例如用户ID,姓名,性别。 现在大约有10000名用户。

这一次,我需要访问用户的电子邮件地址。 我知道我可以通过添加范围属性来获取新用户的电子邮件地址。 但是,对于现有用户,虽然我可以访问电子邮件地址,但我不知道如何显示授权对话以获取访问电子邮件地址的权限。

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

以下是我使用过的代码段。基本上使用/ me / permissions检查其权限并显示重新验证链接

<script>
    var FB_config = {
        API_ID: 123123123123,
        PERMISSIONS: "publish_stream,email",
    };

    jQuery(document).ready(function(){
        // initialise FB
        window.fbAsyncInit = function() {
            FB.init({
                appId      : FB_config.API_ID,
                status     : true, 
                cookie     : true,
                xfbml      : true,
                oauth      : true
            });
            FB.Event.subscribe('auth.statusChange', FBverifyLogin);
        };
    });

    function FBverifyLogin(response) {
        if (response.status === 'connected') {
            checkPermissions(); // check permissions if the user is logged in
        }
    }


    function checkPermissions(){
        jQuery("#FBreauth").hide();
        FB.api('/me/permissions', function(response) {
            var permissions = FB_config.PERMISSIONS.split(",");
            for(var i = 0; i < permissions.length; i++)
            {
                if(response.data[0][permissions[i]] == undefined || response.data[0][permissions[i]] != 1)
                {
                    // user does not have full permissions, show reauth link
                    jQuery("#FBreauth").show();
                    break;
                }
            }
        });
    }
    function FBreauth(){
        FB.ui(
            {
                method: 'oauth',
                display: 'popup',
                app_id: FB_config.API_ID,
                client_id: FB_config.API_ID,
                redirect_uri: "http://www.facebook.com/connect/login_success.html",
                scope: FB_config.PERMISSIONS
            }
        );
    }
</script>
<a href="#" onclick="FBreauth(); return false;" id="FBreauth">App permissions have changes. Please reauthorize this app</a>