Использование кнопки входа в XFBML просит пользователя пройти аутентификацию дважды - PullRequest
6 голосов
/ 04 июня 2010

Я просто пытаюсь настроить Facebook Connect, чтобы на моем уже установленном сайте можно было выбрать регистрацию с помощью регистрационной формы или зарегистрироваться в Facebook Connect (это действительно должно быть проще, чем раньше, устаревшие документы сводят меня с ума ). Когда пользователь нажимает кнопку, он открывает всплывающее окно и просит разрешить то, что я правильно спросил. Однако, когда они нажимают «Разрешить», он запрашивает разрешение снова (но только базовую информацию профиля). Это очевидно вызвано действием по умолчанию нажатия кнопки fb: login, даже если они уже вошли в систему и позволили приложению получить доступ к своим данным.

<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>

Ответы [ 2 ]

8 голосов
/ 05 июня 2010

Видимо, вы можете просто назначить разрешения в 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>
0 голосов
/ 05 июня 2010

Я почти уверен, что проблема заключается в назначении события "onclick" для fb:login-button, которое уже имеет свое поведение по умолчанию. Просто отбросьте этот тег кнопки входа и создайте свою собственную обычную кнопку HTML (ссылку, изображение или все, что вы хотите) с этим событием onclick.

...