iPhone Web 应用程序中的 OAuth 回调
我正在构建一个全屏 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 应用程序吗?
I'm building a full-screen iPhone optimized web app. It gets launched from the homepage like a native app and behaves like a standalone app via the following directive, but it's just plain HTML/CSS/JavaScript, no PhoneGap involved.
<meta name="apple-mobile web-app-capable" content="yes" />
When trying to authenticate over OAuth, the redirect to Twitter (or any other OAuth provider) takes me out of my full-screen web app and into Mobile Safari. Once the Twitter auth completes, the redirect back to my app does not launch my homepage app, instead just redirects within Mobile Safari. Is it possible to do OAuth inside an iPhone homepage web app? Short of that, can I get the OAuth callback to re-launch my homepage web app?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我最近遇到了类似的问题,发现如果您在 Javascript 中使用
window.location.href="http://example.com/whatever"
设置 URL,那么 iOS 不会切换到 Safari。我已经成功地在独立的网络应用程序中使用 PayPal 结帐和 Facebook 登录,而无需使用此方法切换到 safari!如果您要提交表单,也可以通过 JS 执行此操作,并从响应中获取重定向 URL,然后设置位置。至于之后交还给你的应用程序,这取决于外部服务如何工作。如果这样不行,您可以在切换到 Safari 之前弹出一个
警报(“您将被传递到 Safari 进行身份验证。之后重新加载此应用程序。”)
。不太好,但比自动切换应用程序给他们带来惊喜要好!I've had a similar problem recently, and found that if you set the URL in Javascript with a
window.location.href="http://example.com/whatever"
then iOS doesn't switch to Safari. I've managed to get PayPal checkout and Facebook login working in standalone web apps without switching to safari using this method! If you're submitting a form, do that via JS too and get the redirect URL from the response then set the location. As for handing back to your app afterwards, it depends on how the external service works.If that's no good, you could do a pop-up
alert('You will be passed to Safari for authentication. Reload this app afterwards.')
before they get switched to Safari. Not great, but better than surprising them with automatically switching apps!我假设您有一个“manifest”元标记来引用manifest.json 文件。
我建议您执行以下解决方法。它在 ios safari Web 应用程序上完美运行:
https://stackoverflow.com/a/52286655/8390589
I´m assuming that you have a "manifest" meta tag to reference manifest.json file.
I suggest you to do the following workaround. It works perfect on ios safari web app:
https://stackoverflow.com/a/52286655/8390589