Ios 如何使用浏览器重定向创建Facebook风格的应用程序内身份验证?
我希望能够通过定制的iPhone应用程序验证Safari网站上的交易,然后通过回调将用户带回同一Safari窗口。。。有点像Facebook OAuth风格的登录Ios 如何使用浏览器重定向创建Facebook风格的应用程序内身份验证?,ios,objective-c,authentication,safari,url-scheme,Ios,Objective C,Authentication,Safari,Url Scheme,我希望能够通过定制的iPhone应用程序验证Safari网站上的交易,然后通过回调将用户带回同一Safari窗口。。。有点像Facebook OAuth风格的登录 用户在网页上,点击按钮进行交易 Safari使用方案和参数()启动我们的定制应用程序 应用程序验证用户身份 用户通过一些回调被重定向回Safari,通知网页事务已成功(最好在同一窗口中) 这是第四步,我不知道怎么做。我想我可以很容易地将用户重定向回另一个窗口中的浏览器,但是否可以通过回调将他们发送回以前所在的同一个窗口?更新: 这是有
if( [[UIApplication sharedApplication] canOpenURL:myURL] )
{
[[UIApplication sharedApplication] openURL:myURL];
}
我之所以说这是可能的,是因为谷歌地图在iOS 8上做到了这一点。
如果您使用mobile Safari搜索地址,然后选择生成的地图视图,它将打开谷歌地图应用程序(如果已安装)。谷歌地图应用程序将在页面顶部有一条横幅,上面写着“返回SAFARI”。如果您单击此横幅,它将带您返回Safari,而不会以您喜欢的方式打开新选项卡
同样的行为也扩展到了Chrome。此处的文档还说明,除非您多次调用,否则在Chrome中打开URL时将创建一个新选项卡:
当然,Chrome是他们自己的应用程序,在这种情况下,他们完全有权使用未记录的功能。我不能说谷歌是如何通过Safari实现这一点的
我建议最好找到一种方法来支持这两种浏览器,就像谷歌在地图应用程序中所做的那样,给用户一个一致的体验,并尊重他们对浏览器的选择。在我看来,这个功能当然是合理的;如果Safari启动了您的应用程序,为什么您不能将用户返回到该页面。您不能在有效负载中发送userAgent信息吗?这样你就可以计算出正在使用的应用程序,并将用户返回到那里。。。您将在AppDelegate的委托回调中获得调用应用程序的bundle ID——假设一切都公平,Safari也应该发回它的ID。Safari中奇怪的、未记录的行为。太棒了!:)