1

我正在设计一些需要 FB 用户信息的 FB Page Tab 应用程序。一旦用户点击页面上安装的应用程序的选项卡,我想请求用户许可。然后,如果我得到用户和页面的信息,我可以继续使用我的应用程序。

问题是我希望用户在点击选项卡后立即被引导到 oauth 对话框,而不是单击按钮。这就是为什么我不使用弹出方案来获得用户许可的原因。大多数浏览器都不允许出现没有点击的弹出窗口。到目前为止我所做的是使用“使用 CANVAS APPS 登录”的说明

https://developers.facebook.com/docs/howtos/login/login-for-canvas/

这使我可以在用户点击选项卡后立即将用户引导到 oauth 对话框,并且还有回调让我获得用户许可并将应用程序作为 Canvas 应用程序运行,这是我真正不想要的。问题是当用户点击选项卡时我得到页面 ID,但是当用户返回回调 URL 时,请求对象包含用户信息而不是页面 ID。我曾尝试将页面 id 存储在会话中,但是当应用程序在回调 url 上返回时,它会以某种方式被破坏。我可能会将它存储在数据库中并再次访问它,但我不确定我应该这样做。

我已经研究过,一种方法是通过存储页面链接和 id 然后重新生成链接并将其用作回调来将用户回调到您的页面选项卡应用程序。也不太热衷于此。所有这些问题都是因为您无法在 iframe 中运行 oauth 对话框。

我正在为此使用 Rails 及其omniauth-facebook gem。

这里有一些链接,其中讨论了一些相同的问题并提出了一些建议。

用户身份验证后重定向回页面选项卡?

在 Facebook 页面选项卡应用程序上为未登录用户自动调用 FB.login

我已经开始了这个新线程,因为上面的那些已经很老了。我知道我的困境可能是微不足道的,我可能会遗漏一些小问题。但任何帮助将不胜感激。

请务必告诉您是否需要任何代码来使我的问题更清楚。

4

1 回答 1

0

问题是我希望用户在点击选项卡后立即被引导到 oauth 对话框,而不是单击按钮。这就是为什么我不使用弹出方案来获得用户许可的原因。大多数浏览器都不允许出现没有点击的弹出窗口。

在画布/页面选项卡应用程序中,您可以在调用时设置参数display: "async"(在用于传递scope参数的同一对象中)FB.login- 这样,它不会打开弹出窗口,而是一种模式对话框,在整个 Facebook 页面;并且因为它不是一个真正的弹出窗口,所以即使在页面加载时直接调用它也不会被阻止,到目前为止没有任何用户交互。

于 2013-03-16T19:43:35.723 回答