【问题标题】:OAuth callbacks in iPhone web appsiPhone Web 应用程序中的 OAuth 回调
【发布时间】:2011-10-27 10:59:47
【问题描述】:

我正在构建一个全屏 iPhone 优化的网络应用程序。它像原生应用一样从主页启动,并通过以下指令像独立应用一样运行,但它只是普通的 HTML/CSS/JavaScript,不涉及 PhoneGap。

<meta name="apple-mobile web-app-capable" content="yes" />

当尝试通过 OAuth 进行身份验证时,重定向到 Twitter(或任何其他 OAuth 提供程序)会将我从全屏 Web 应用程序中带出并进入 Mobile Safari。 Twitter 身份验证完成后,重定向回我的应用程序不会启动我的主页应用程序,而只是在 Mobile Safari 中重定向。是否可以在 iPhone 主页 Web 应用程序中进行 OAuth?除此之外,我能否获得 OAuth 回调以重新启动我的主页网络应用程序?

【问题讨论】:

  • 只是想说没有办法以编程方式重新启动应用程序(也许你可以在越狱设备上但在正常情况下不行)
  • 只是为了澄清。由于您正在构建一个 Web 应用程序,因此您已经在 Mobile Safari 中。你的意思是说认证页面在Safari的新页面中打开?
  • 当您将 iPhone 优化的网络应用程序保存到主页并从那里运行时,它实际上并没有在 Safari 中打开。好吧,它仍然由 Safari 在幕后呈现,但它像一个独立的应用程序一样启动。它在快速应用切换任务栏和所有内容中都有自己的图标。问题是指向 Twitter 的链接离开了该容器。

标签: iphone oauth twitter-oauth iphone-web-app iphone-standalone-web-app


【解决方案1】:

我假设您有一个“清单”元标记来引用 manifest.json 文件。

我建议您执行以下解决方法。它在 ios Safari 网络应用上完美运行:

https://stackoverflow.com/a/52286655/8390589

【讨论】:

    【解决方案2】:

    我最近遇到了类似的问题,发现如果您在 Javascript 中使用 window.location.href="http://example.com/whatever" 设置 URL,那么 iOS 不会切换到 Safari。我已经设法让 PayPal 结账和 Facebook 登录在独立的网络应用程序中工作,而无需使用这种方法切换到 safari!如果您要提交表单,也可以通过 JS 执行此操作并从响应中获取重定向 URL,然后设置位置。至于事后交还给你的应用,就看外部服务的工作方式了。

    如果这样做不好,您可以在他们切换到 Safari 之前弹出alert('You will be passed to Safari for authentication. Reload this app afterwards.')。不是很好,但比自动切换应用程序让他们感到惊讶更好!

    【讨论】:

    • 如果您请求特定权限范围(例如googleapis.com/auth/youtube)并且您有多个与您的登录相关联的帐户,Google OAuth 仍然坚持从“选择帐户”屏幕切换到 Safari。
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2011-02-03
    • 2012-09-06
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多