我正在网站上实施Facebook注册.没有onvalidate参数,一切都可以像预期的那样工作,但是当包含它时,一切似乎都被分解(没有错误抛出,form什么都不做).
这是我的代码:
<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",{"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要求我填写它.如果我将此参数留空,则不会调用validate函数,并且不显示任何错误.无论哪种方式,始终显示根据此表单的TOS错误永远不会出现.
类似问题的问题涉及网站URL与应用程序的不一致.在这种情况下并非如此.
对于域名澄清,我使用的域名“im.localhost”是无法通过互联网访问.我不相信这是一个问题,因为没有验证注册表的工作,和登录系统我已经实施工作.然而,无效,注册表完全停止工作.