Я просто пытаюсь установить Подключение Facebook, чтобы позволить выбору на моем уже установленном сайте регистрироваться в форме регистрации или регистрироваться в Подключении Facebook (это действительно должно быть легче, чем это, устаревшие документы управляют мной безумный). Когда пользователь нажимает кнопку, она открывает всплывающее окно и просит позволять вещи, которые я спросил правильно. Однако, когда они нажимают Allow, он просит позволять снова (но просто основная информация о профиле). Это, очевидно, инициировано от действия по умолчанию нажатия на 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>
Очевидно, вы можете просто назначить разрешения в 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>
Я почти уверен, что проблема заключается в назначении события «onclick» для fb: login-button
, у которого уже есть собственное поведение по умолчанию. Просто откажитесь от этого тега кнопки входа и создайте свою собственную обычную кнопку html (ссылку, изображение или что угодно) с этим событием onclick.