PhoneGap和OAuth2

时间:2012-03-20 16:42:27

标签: javascript cordova oauth-2.0

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

有哪些选择?我想到了一个繁琐的替代方案,包括将用户名/密码发布到我托管在服务器上的应用程序,然后安装登录。然后,PhoneGap应用程序必须询问服务器验证是否成功。但是,我希望有一种更简单的方法。

在PhoneGap应用上通过Google登录的最佳方式是什么?

2 个答案:

答案 0 :(得分:8)

我设法让它运转起来!我在这里发表我的想法,因为我在搜索网络数小时后很难找到答案。

重要的步骤是:

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

如果您仍然不知道如何操作,请查看this Android app。 (有很多的代码,它看起来似乎势不可挡,所以我建议只把它作为最后的手段)

答案 1 :(得分:4)

Google不允许您通过直接处理用户凭据来执行直接身份验证。相反,Google希望您执行身份验证协议,通常是OAuth 2.0。您可能听说过的其他流行的身份验证协议是OpenID 1.0,2.0,OpenID Connect,SAML 2.0,ID-FF等。这些协议会将用户重定向到身份提供商(在本例中为Google),然后将其发回给您您可能用来信任用户的断言。使用API​​(如Google),您可以使用OAuth的授权功能,该功能可为您提供可在身份验证后与所有Google API一起使用的令牌。

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

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

  • 选择使用主视图
  • 将用户重定向到Google授权终结点
  • 选择使用Google授权端点打开 ChildBrowser ,以免丢失应用中的任何状态。
  • 以某种方式使用授权端点打开Safari或其他浏览器,并注册自定义架构处理程序,以便在身份验证后将用户重定向回应用程序。

这些示例在OAuth 2.0规范中含糊其词,但在特定用例中没有任何帮助。通常,最好的选择并不完美(从用户的角度来看)。

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