【问题标题】:Is it possible to use FB Connect in an iframe on a 3rd party site?是否可以在第 3 方网站的 iframe 中使用 FB Connect?
【发布时间】:2015-09-19 22:34:55
【问题描述】:

我在第 3 方网站上有一个 iframe。 iframe 内部是我的应用程序,用户使用 FB Connect 进行身份验证。我在我的 Ruby on Rails 网站上使用 omniauth gem 来处理与 Facebook 的连接。

如果 a) 您已经登录到 FB,并且 b) 您已经允许我的网站使用您的详细信息,它可以无缝运行。

如果其中任何一个缺失 - 在 FB connect 呼叫 Facebook 的那一刻 - 一切都会停止,我会得到 FB 徽标和一个链接以点击进入 Facebook。当我单击该链接时 - 它会将我带出 iframe 并进入 Facebook。显然,一旦我返回 - 没有 iframe 可以返回,我不再在第 3 方网站上 - 而是在我的网站上。

这种技术应该可行吗?如果是这样 - 我可能哪里出错了?正如我所说 - 如果满足 a) 和 b) - 它可以无缝运行。

【问题讨论】:

    标签: ruby-on-rails facebook iframe omniauth


    【解决方案1】:

    您不能从 iframe 中重定向到 Facebook,它必须加载到顶级页面中。这就是为什么你会看到 FB 标志和链接,它在那里强制突破 iframe 结构。如果您想避免该中间步骤,请确保您自己进行顶级重定向(通常通过输出一些设置 top.location 的 javascript 代码)。

    在返回端,您可以将 redirect_uri 设置为指向第 3 方站点,而不是直接指向您的站点(或接受默认的 redirect_uri,这可能会在不可见的情况下执行此操作),或者如果由于您的应用程序而无法做到这一点在 Facebook 上进行配置,检测到您的页面正在加载到顶层并重定向到第 3 方网站以强制其返回 iframe。

    【讨论】:

    • 哦不——真可惜。我在一些网站上看到了弹出窗口的使用。那行得通吗?因此,在 iframe 中,我在主窗口上打开一个弹出窗口 - 执行 facebook 连接过程,然后关闭弹出窗口。我认为没有办法在 iframe 中通知我的网站身份验证已完成。所以 - 不确定这在技术上是否可行 - 我在 iframe 中的网站可以轮询经过身份验证的 cookie 以“到达”?
    • 这将是一个相当奇怪的流程,但理论上可以打开一个新窗口来加载 Facebook 身份验证页面,然后接收重定向回您域中的页面。然后该页面可以输出一些使用 window.opener 与 iframe 通信的 javascript。但是,做一个顶级重定向然后在完成后跳回框架不是更容易吗?
    • 我发现了这个:看起来svpply.com/login 正在做类似的事情。因此,如果我将该 url 添加到 iframe - 它会按照我希望的方式工作。我只是不确定他们是如何实现它的。我可以看到有服务器端和客户端的连接方式。登录后,他们创建了一个用户名 - 所以看起来还有一些服务器端实现。但是,是的 - 我只是不知道他们采取了哪些不同的步骤。
    • 我找到了this - 它帮助我回答了这个问题,使用了弹出窗口的技术。
    猜你喜欢
    • 2014-06-12
    • 2018-10-30
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多