【问题标题】:PHP External Oauth : how to displaying a waiting message while waiting for callback (not using AJAX)PHP External Oauth:如何在等待回调时显示等待消息(不使用 AJAX)
【发布时间】:2012-11-26 09:35:52
【问题描述】:

我们允许使用 PHP API 的外部 OAuth 访问多个社交网络。当用户选择外部身份验证时,会打开一个新窗口(弹出窗口),应用程序在此请求授权。然后,仍然在弹出窗口中,使用提供给外部应用程序的回调 url 重定向用户。回调脚本执行各种任务(登录、检查、同步等),这些任务可能需要一段时间,然后才会关闭弹出窗口并更新母页。执行这些任务时,弹出窗口只是空白。

我想要的是在调用回调 url 时在弹出窗口上显示“请稍候...”消息。一种解决方案是弹出窗口仅显示消息并传递 AJAX,但由于我不知道回调的参数(取决于外部应用程序),我想避免这种情况。有没有办法只用一个 PHP 脚本?

【问题讨论】:

  • 回调是否转发到您的站点?
  • 是的。当用户单击“使用...登录”时,它会调用一个名为“bzkExternalOAuth.php”的脚本,其中加载了正确的 API(Fb、linkedin、google、...)。如果我们使用例如FB,页面然后被重定向到FB,最后,当用户授权我的站点到他的FB时,它回调相同的'bzkExternalOAuth.php'。

标签: php callback popup


【解决方案1】:

您可以在 iFrame 中执行授权(需要额外的工作以将 iframe 与弹出窗口同步以达到您想要的行为)并根据需要设计窗口。

你也可以只设置标题。

【讨论】:

  • 我相信我在某处读到过,在这种情况下使用 iframe 并不是一个好的做法(我不记得它是哪个应用程序的文档)
  • 请见谅。如果您无法控制“已加载”页面(弹出的,我建议您将 iframe 添加到其中),您甚至无法更改标题。您的身份验证服务的回调 URL 控制用户在您之后看到的所有内容使用指定的 URL 打开该弹出窗口。如果您不喜欢使用 iframe,那么您将无法对它做任何事情。
  • 我找不到关于不使用 iframe 的建议的参考。所以我会再朝这个方向调查。通过额外的工作,你的意思是我必须设置一个定期观察者来检查 iframe 的内容(例如,如果页面是空白的,那么我会在包含 iframe 的弹出窗口中用一些设计“屏蔽”iframe)?
  • 不。类似于确保身份验证服务重定向到您的页面,该页面包含处理您的父弹出窗口的 JS 代码。
【解决方案2】:

因为服务会将您返回到您的服务器 - 您可以尝试以下操作: 1. 将传输编码设置为分块。 2. 使用加载器 img 回显 javascript document.write。 3. 做你的处理。 4. 处理结束后关闭窗口。

【讨论】:

  • 听起来是我需要的。我尽快试用。
  • 这就是我要找的。谢谢。它适用于我的开发。服务器,但我仍然无法在 preprod 服务器上创建它,可能是由于 NGINX 反向代理的配置。但那是另一回事了;)
  • 你可以检查这个作为答案然后)
  • 是的。现在我也在 preprod 服务器上得到了它,在 conf 文件中添加了 proxy_buffering;
猜你喜欢
  • 1970-01-01
  • 2013-02-09
  • 2011-11-15
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
相关资源
最近更新 更多