您可以在网页的 iframe 中加载授权端点。但是,请注意,某些浏览器在 iFrame 中对发送到登录提供程序的 cookie 有限制。通常(Safari、iOS)您只有对 cookie 的读取访问权限,如果会话 cookie 已在提供程序处设置,这就足够了。
在您的回调页面上 - 您在身份验证后从保管箱发回;您将需要调用 javascript 函数来触发父页面上的事件,即完成身份验证。
window.parent.AppController.authenticationComplete();
然后父母可以删除iframe,并继续进行身份验证。
authenticationCompleted = function() {
// [snipp]
$("iframe#loginwrapper").remove();
}
由于潜在的 cookie 问题,我建议您在提供主 HTML 页面之前执行从服务器端启动的所有身份验证步骤。然后,您将确保您的应用没有加载两次。这是许多身份验证/身份中间件软件解决方案的典型行为。
当您提到应用程序时,不清楚您是指纯 WebApp,还是通过使用 Phonegap 等框架在混合应用程序中提供控制。使用 Phonegap 或类似软件,您可以在应用程序内的浏览器中加载浏览器 - 在这种情况下,ChildBrowser 不受相同 cookie 限制的限制。
我最近写了一篇关于如何使用 Phonegap 和 Childbrowser for iOS 进行这项工作的教程。
请注意,本教程使用的 OAuth 2.0 与 OAuth 1.0 略有不同。