Я пытаюсь осуществить регистрацию Facebook на веб-сайте. Без параметра onvalidate все работает так, как можно было бы ожидать, но при его включении все, кажется, сломается (ошибки не выбрасываются, форма ничего не делает).
Вот мой код:
<center>
<fb:registration redirect-uri="http://im.localhost/register"
fields='[{"name":"name"},{"name":"username","description":"Website Username","type":"text"},{"name":"email"},{"name":"password","view":"not_prefilled"},{"name":"captcha","view":"not_prefilled"},{"name":"tos","type":"checkbox","description":"I accept the Terms of Service"}]' onvalidate='validate'>
</fb:registration>
</center>
<script>
function validate(form) {
console.log('Validation');
errors = {};
errors.tos = "You must accept the terms of service";
return errors;
}
</script>
<!-- at end of page: -->
<script>
// ...
FB.init({
appId: '<?php echo IM_Facebook::getAppIDStatically(); ?>',
channelUrl: '<?php echo $this->serverUrl().$this->baseUrl('/xsrd.html'); ?>',
status: true,
cookie: true,
xfbml: true
});
// ...
</script>
Функция console.log никогда не вызывается при нажатии кнопки отправки формы. (Тем не менее, в противном случае он действует почти нормально - всплывающее сообщение "Вы зарегистрировали, используя abc" появляется и исчезает, когда я нажимаю "подтвердить", но ничего не происходит.
Если я оставлю пользовательское поле (имя пользователя) пустым без этого параметра, Facebook попросит меня заполнить его. Если я оставлю его пустым с этим параметром, функция проверки не вызывается, и она не показывает никаких ошибок. В любом случае ошибка TOS, которая всегда должна отображаться в соответствии с этой формой, никогда не появляется.
Проблемы с подобными вопросами связаны с URL-адресом веб-сайта, не соответствующим URL-адресу приложения. В этом случае это не так.
Для уточнения домена я использую домен "im.localhost", который недоступен через Интернет. Я не считаю, что это проблема, потому что без onvalidate работает регистрационная форма, и система входа в систему, которую я выполнил, работает. Однако при onvalidate регистрационная форма перестает работать вообще.