iPhone网页应用中的OAuth回调

14

我正在开发一款全屏幕的iPhone优化的网页应用程序。它像本地应用程序一样从主页启动,并通过以下指令行为类似于独立应用程序,但只是纯粹的HTML/CSS/JavaScript,没有涉及PhoneGap。

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

在尝试进行OAuth身份验证时,重定向到Twitter(或任何其他OAuth提供程序)会使我退出全屏Web应用程序并进入移动Safari。一旦Twitter授权完成,重定向回我的应用程序不会启动我的主页应用程序,而只是在移动Safari中重新定向。是否可以在iPhone主页Web应用程序内执行OAuth?除此之外,我能否使OAuth回调重新启动我的主页Web应用程序?


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

15

我最近遇到了类似的问题,发现如果你使用JavaScript设置URL:window.location.href="http://example.com/whatever",那么iOS就不会切换到Safari。我成功地让PayPal结账和Facebook登录在独立的Web应用程序中工作,并使用这种方法而无需切换到Safari!如果您正在提交表单,请使用JS进行操作并从响应中获取重定向URL,然后设置位置。至于之后如何返回到您的应用程序,则取决于外部服务的工作方式。

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


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

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接