如何允许facebook从iFrame登录

时间:2016-04-02 11:20:27

标签: javascript html facebook iframe callback

我的应用程序是嵌入到其他网站的小部件,但最重要的功能之一是使用facebook登录。

但现在我有一个问题 我有iframe标签,但我也有iframe:

<a href="http://roomtobid.com/social/login/redirect/facebook" class="btn btn-info btn-lg col-md-12" >Facebook</a>

现在当我尝试点击并登录时,什么都没发生。 另外,当我查看浏览器控制台时,我收到错误:

  

拒绝展示   &#39; https://www.facebook.com/login.php?skip_api_login=1&api_key=17499948800008 ... m5xN3sZ3hrPQWQ44FYQPR1yPpsDwLuvoTP9jtZq6%23_%3D_&安培;显示=页面&安培;语言环境= sr_RS&#39;   在一个框架中因为它设置了X-Frame-Options&#39;到&#39; DENY&#39;。

我如何解决我的问题?

此外,我尝试在target="_top"标记处添加<a>,然后再将其发送给Facebook,然后将其作为回调原始域名而不是回到iFrame。

有什么方法可以解决这个问题吗?

我看到zopim聊天允许他们的访问者使用facebook登录,但是他们的facebook登录会打开到新的小窗口。

1 个答案:

答案 0 :(得分:0)

  

然后发送给我第一个到Facebook然后回调到原始域而不是回到iFrame

当然不是。

它只会重定向回指定为redirect_uri的地址 - 并且该地址必须与应用域匹配。在应用设置中指定为有效的OAuth重定向URI。

您可以做的唯一事情就是将iframe所在页面的网址作为参数添加到您的应用回调网址中,以便您的应用可以重定向到那里,之后Facebook登录已重定向回您的应用程序。

您也可以尝试将其放入会话中 - 但如果用户打开了嵌入您的小部件的多个页面,加上会话Cookie和第三方Cookie阻止很容易造成其他麻烦,则可能会出现问题。

这仍然会让您首先得到“父”页面的网址。父页面必须首先将该信息显式传输到您的窗口小部件,例如通过GET参数将它们附加到iframe src中的窗口小部件地址。 (可以直接使用URL,也可以是某种客户端标识符,然后在数据库中查找。)