在Android webview上自动登录Google帐户

Pet*_*ete 10 authentication cookies google-app-engine android webview

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

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

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

然后我遇到了这个教程,实际上看起来真的很有希望,但到目前为止我还没能调整他的代码来使用我自己的代码.

我还发现这个SO链接表明我需要做的就是将auth令牌(我可以通过Nick的方法获得)传递到我作为cookie加载的每个webview中.

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

Jor*_*dan 1

出于安全原因,WebView无法访问手机的缓存、Cookie 存储等,建议您使用新的Chrome 自定义选项卡,它可以自动登录您的用户。


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

在“example.appspot.com”App Engine 应用程序中,如果您使用的 API 需要用户信息(例如 Google 日历 API),则您需要专门请求用户批准才能访问此信息。

一旦获得他们的批准,您就可以保存访问和刷新令牌,以便代表他们进行未来的 API 调用,而无需重复获得用户同意。您可以在OAuth 2.0 Playground中了解整个 Oauth 流程的工作原理。

即使您自动登录用户,他们仍然会看到请求您的应用程序访问其信息的批准页面。开发一种黑客手段来强行批准代表用户访问用户信息是一种重大的安全违规行为。


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