PhoneGap and OAuth2

PhoneGap and OAuth2

本文关键字:OAuth2 and PhoneGap      更新时间:2023-09-26

我正在开发一个PhoneGap应用程序,并要求我的用户使用OAuth2通过Google登录。这可以直接通过JavaScript实现吗?我几乎没有使用JavaScript(和jQuery)的经验。

有哪些选择?我想到了一个麻烦的替代方案,将用户名/密码发布到我在服务器上托管的应用程序中,然后由该应用程序负责登录。然后PhoneGap应用程序必须询问服务器身份验证是否成功。然而,我希望有一个更简单的方法。

在PhoneGap应用程序上通过谷歌登录的最佳方式是什么

我已经设法让它工作了!我把我的想法发布在这里是因为我在网上搜索了几个小时后很难找到答案。

重要步骤是:

  • 确保ChildBrowser正常工作
  • 设置一个监听页面更改的功能window.plugins.childBrowser.onLocationChange = function(fooUrl) { console.log(fooUrl); }
  • 如本教程所述,使用查询字符串构建URL
  • 将ChildBrowser指向URL
  • 当用户登录时,您将能够从fooUrl提取会话令牌

如果你仍然不知道如何做到这一点,看看这个Android应用程序。(有很多代码,可能看起来太多了,所以我建议只能作为最后手段使用)

Google将不允许您通过直接处理用户凭据来执行直接身份验证。相反,Google希望您执行一个身份验证协议,通常是OAuth 2.0。您可能听说的其他流行的身份验证协议是OpenID 1.0、2.0、OpenID Connect、SAML 2.0、ID-FF等。这些协议会将用户重定向到身份提供商(在这种情况下是谷歌),并向您发送一个断言,您可以使用该断言来信任用户。对于像谷歌这样的API,您可以使用OAuth的授权功能,它为您提供一个令牌,您可以在身份验证后与所有谷歌API一起使用。

  • 很好地介绍了OAuth 2.0的工作原理

对于PhoneGap和移动应用程序,情况与典型的OAuth设置有点不同。

在您的情况下,浏览器处于受控环境中,您的应用程序,您可能会

  • 选择使用主视图将用户重定向到谷歌授权端点
  • 选择使用Google Authorization端点打开ChildBrowser,以不丢失应用程序上的任何状态
  • 以某种方式打开Safari或其他具有授权端点的浏览器,并注册自定义模式处理程序,以便在身份验证后将用户重定向回您的应用程序

OAuth 2.0规范中含糊地提到了这些例子,但在特定的用例中,什么是最好的或最优的并没有帮助。通常,(从用户的角度来看)最好的选择并不完美。

我最近写了一篇关于如何使用Phonegap和ChildBrowser for iOS的教程。

  • 使用ChildBrowser和JSO的OAuth 2.0 Phonegap指南