2011-09-29 44 views
1

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

它可以无缝工作,如果a)您已经登录到FB,并且b)您已经授权我的网站使用您的详细信息。

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

该技术是否可行?如果是这样 - 我可能会在哪里出错?正如我所说 - 如果a)和b)得到满足 - 它可以无缝工作。

回答

1

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

在回报方面,您可以将redirect_uri设置为指向第三方网站,而不是直接指向您的网站(或者接受可能无法实现的默认redirect_uri),或者如果因为您的在Facebook上的应用程序配置,检测到您的网页正在加载到顶层,并重定向到第三方网站强制它回到IFRAME。

+0

哦,不 - 太遗憾了。我曾在某些网站上看到使用弹出式窗口。这会起作用吗?因此,在iframe中,我在主窗口上打开一个弹出窗口 - 执行facebook连接过程,然后关闭弹出窗口。我不认为会有办法通知我的网站在iframe中认证已完成。所以 - 不知道这在技术上是否可行 - iframe中的我的站点可以轮询经过验证的cookie以“到达”? – Joerg

+0

这将是一个相当奇怪的流程,但理论上可以打开一个加载Facebook身份验证页面的新窗口,然后将重定向回到您网域中的页面。然后该页面可以输出一些使用window.opener与iframe进行通信的javascript。但是,做一个顶级重定向然后在完成时跳回框架不是更容易吗? –

+0

我发现它:它看起来像http://svpply.com/login正在做类似的事情。因此,如果我将该网址添加到iframe中,它就会按照我希望的方式工作。我只是不确定他们是如何实施它的。我可以看到有服务器端和客户端连接的方式。登录后,他们创建一个用户名 - 所以它看起来也有一些服务器端的实现。但是,是的 - 我只是不知道他们采取了哪些不同的步骤。 – Joerg

相关问题