14

我正在构建全屏iPhone优化的网络应用。它像本机应用程序一样从主页启动,并通过以下指令表现为独立应用程序,但它只是纯HTML/CSS/JavaScript,不涉及PhoneGap。iPhone网络应用中的OAuth回调

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

当试图在OAuth的,重定向到Twitter(或任何其他的OAuth提供商)身份验证需要我出全屏的Web应用程序,进入移动Safari浏览器。一旦Twitter身份验证完成,重定向回我的应用程序不会启动我的主页应用程序,而只是在Mobile Safari中重定向。是否有可能在iPhone主页网络应用程序内部执行OAuth?简而言之,我可以通过OAuth回调重新启动我的主页Web应用程序吗?

+0

只是想说有没有办法以编程方式重新启动应用程序(也许你可以在越狱设备上,但不是在正常情况下) – mattacular

+0

只是为了澄清。由于您正在构建Web应用程序,因此您已经在Mobile Safari中。你的意思是说认证页面在Safari的新页面中打开吗? –

+2

当您将iPhone优化的Web应用程序保存到主页并从中运行时,它实际上并未在Safari中打开。那么,它仍然由Safari提供,但它像一个独立的应用程序启动。它在快速应用切换任务栏和一切中获得它自己的图标。问题是,Twitter的链接会离开该容器。 – mustpax

回答

14

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

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

+0

如果您要求特定的权限范围(例如https://www.googleapis.com/auth/youtube),并且您有多个与您的登录帐户关联的帐户,Google OAuth仍然坚持从“选择帐户”屏幕切换到Safari。 – Dunc