Facebook注册插件不会重定向/发送登录用户的数据

时间:2011-10-18 15:30:26

标签: javascript facebook iframe

我刚尝试在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,但这也不起作用。我还尝试使用网站属性专门创建一个新的应用程序,但也以同样的方式失败。感谢你的帮助。

4 个答案:

答案 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)

在我看来你错过了一些东西:

< fb:register >

在这里你可以看到tha属性onvalidate,它包含按下Register按钮后调用的js函数的名称,传递包含用户信息的整个对象。 问候 ;) 卢卡

答案 3 :(得分:-1)

在第二个代码中,redirect-uri =“”需要一个值。它需要以您的网站网址为前缀。