我刚尝试在iframe页面标签中使用Facebook注册插件。
如果有人想知道我为什么要这样做,我想使用Facebook注册插件在我的FB页面上创建一个简报注册表。
我尝试使用此代码:
<iframe src="https://www.facebook.com/plugins/registration.php?
client_id=113869198637480&
redirect_uri=&
fields=name,birthday,gender,location,email"
scrolling="auto"
frameborder="no"
style="border:none"
allowTransparency="true"
width="100%"
height="330">
</iframe>
和这段代码:
<div id="fb-root"></div>
<script src="https://connect.facebook.net/en_US/all.js#appId={YOUR_APP_ID}&xfbml=1"></script>
<fb:registration
fields="name,birthday,gender,location,email"
redirect-uri=""
width="530">
</fb:registration>
在这两种情况下,我都使用了页面选项卡应用程序的APP_ID,以及该页面选项卡的画布URL,但是我填写了网站字段和正在使用的网站。
当我取出预先填写的FB信息并填写表格时,接收页面上的var_dump会给出正确的信息,但是当我使用预先填写的FB信息提交时,它会弹出一个说法,您正在注册APP_NAME_HERE,如果您想要执行此操作,请单击“继续”,或者如果您不注册,则撤消(类似于此),当我单击“继续”时,没有任何操作。
我使用Firebug来检查页面,我认为数据正在发送到另一个iframe,但我不知道如何访问它。我已经尝试将目标更改为_top,_self和_parent,但这也不起作用。我还尝试使用网站属性专门创建一个新的应用程序,但也以同样的方式失败。感谢你的帮助。
答案 0 :(得分:1)
据我所知,target
属性在使用预先填写的信息时会被破坏。也许它与确认弹出窗口出现时流量必须发生的方式有关,但AFAIK没有记录这两者不能一起使用。在任何情况下,无论您在属性中指定了什么,预填充数据似乎都会强制target=_top
。
在这种情况下,您必须将外部页面地址指定为redirect_uri
并在那里处理数据,然后重定向回Facebook页面地址。如有必要,您可以使用查询字符串中的app_data参数传回一些数据。
答案 1 :(得分:0)
很可能您已被标记为已注册,并且正在接收用于FB连接工作的cookie /标头。如果是这种情况,您需要在应用程序管理页面中在Facebook上取消注册您的应用程序。一旦你这样做,该按钮将再次工作。
最后,如果用户登录Facebook并已连接到 你的应用程序,该按钮将显示登录,并在什么时候不会做任何事情 单击(但您的应用程序应使用。检测此状态 getLoginStatus方法而不显示按钮)。
https://developers.facebook.com/docs/plugins/registration/
您可以使用
调试注册状态FB.Event.subscribe('auth.statusChange', function(response) {
if(!response.authResponse) return;
console.log(response)
});
希望这有帮助。
答案 2 :(得分:-1)
在我看来你错过了一些东西:
在这里你可以看到tha属性onvalidate,它包含按下Register按钮后调用的js函数的名称,传递包含用户信息的整个对象。 问候 ;) 卢卡
答案 3 :(得分:-1)
在第二个代码中,redirect-uri =“”需要一个值。它需要以您的网站网址为前缀。