在Android webview上自动登录Google帐户

时间:2014-12-21 05:21:05

标签: android google-app-engine authentication cookies webview

过去一周,我已经淹没了自己的链接,并引导自己在太多的圈子中计数,所以我想我在这里提出问题。我有一个Android应用程序,显示指向用户必须使用其Google帐户登录的网址的网页浏览(后端内置于Google App Engine中)。由于最终用户可能会在他们的Android上登录他们的Google帐户,因此我希望登录过程是自动的。目前,在用户打开的第一个网页浏览中,他们会看到Google登录表单以及一个非常难看的后续页面,并要求您允许example.appspot.com使用您的Google帐户?&#34 ;

这个过程对于用户体验来说是可怕的。我在这里和那里看到了关于自动登录的宝贵资源,但我坦率地失去了几乎 - 我想要的东西 - 但是不能完全看清我的方向应该去。

我阅读了Nick's有关使用App Engine对应用进行身份验证的教程,但只是让令牌无法获得与后端上每个Google帐户相关联的唯一分配的用户ID。最重要的是,之前的经验告诉我应用程序的webview会话与应用程序的HTTPClient会话不一致的困难方式。因此,即使我可以使用尼克的方法登录,也无法帮助我登录网页视图。

然后我遇到了this tutorial,这实际上看起来真的很有希望,但到目前为止,我还没有能够调整他的代码来与我自己合作。

我还发现this SO link表示我需要做的就是将auth令牌(我可能通过Nick的方法获得)传递到我作为cookie加载的每个webview中。

关于它。它们都是相当不同的方法,所以我想知道它们中的任何一个是否真的是我想要的。或者,如果在某处存在一种相当简单的方法。如果有人知道这个问题的直截了当的答案,我真的很感激。谢谢!

1 个答案:

答案 0 :(得分:1)

出于安全原因WebViews无法访问手机的缓存,Cookie存储等,建议您使用可以自动登录用户的新Chrome Custom Tabs

关于“您是否允许example.appspot.com使用您的Google帐户?”屏幕;这是标准OAuth流程,要求用户登录并允许您的应用访问其帐户信息。

在“example.appspot.com”App Engine应用中,如果您使用的是需要用户信息的API,例如Google Calendar API,则需要您明确要求用户批准才能访问此信息。

获得批准后,您可以保存access and refresh tokens代表他们进行未来的API调用,而无需重复用户同意。您可以在OAuth 2.0 Playground中看到整个Oauth流的工作原理。

即使您自动将用户登录,他们仍会看到要求您的应用访问其信息的批准页面。开发黑客以强制批准代表他们访问用户的信息是一个重大的安全违规。

您可以查看新的Firebase Authentication流程,轻松管理用户在App Engine应用程序中的Oauth体验。