使用XFBML登录按钮要求用户进行两次身份验证

Jam*_*son 6 facebook xfbml

我只是想设置Facebook Connect以允许我已经建立的网站上的选择注册注册表,或注册Facebook Connect(这真的应该比它更容易,过时的文档让我疯了).当用户单击该按钮时,它会打开弹出窗口并要求允许我正确询问的内容.但是,当他们单击"允许"时,它会再次要求允许(但只是基本的配置文件信息).这显然是通过单击fb:login-button的默认操作触发的,即使他们已经登录并允许应用访问他们的数据.

<fb:login-button size="medium" length="long" v="2" onclick="fb_login()"></fb:login-button>
<div id="fb-root"></div>
<script src="http://static.ak.fbcdn.net/connect/en_US/core.js"></script>
<script>
    FB.init({appId: '<app_id>', status: true, cookie: true, xfbml: true});

    function fb_login() {
        FB.login(function(response) {
            if (response.session) {
                if (response.perms) {
                    // they have allowed the app, continue with registration
                }
            }
        }, {perms:'email,user_birthday'});
    }
</script>
Run Code Online (Sandbox Code Playgroud)

Jam*_*son 8

显然你可以在FBML中分配权限,并且可以完全绕过调用FB.login.如果Facebook会在他们的文档中提到这一点(咆哮),那将会很棒.

<fb:login-button size="medium" length="long" v="2" perms="email,user_birthday" onlogin="fb_login()"></fb:login-button>
<div id="fb-root"></div>
<script src="http://static.ak.fbcdn.net/connect/en_US/core.js"></script>
<script>
    FB.init({appId: '<app_id>', status: true, cookie: true, xfbml: true});

    function fb_login() {
           // they have allowed the app, continue with registration
    }
</script>
Run Code Online (Sandbox Code Playgroud)