【问题标题】:Authentication from Android Client to Google App Engine Webapp2从 Android 客户端到 Google App Engine Webapp2 的身份验证
【发布时间】:2015-05-16 09:09:27
【问题描述】:

我有一个带有 Google App Engine 后端的基于网络的应用程序 (Webapp2)。身份验证是使用 Webapp2 框架使用自定义用户名/密码完成的。

现在,我正在使用 Android 客户端将此 Web 应用程序扩展到移动设备。如何从 Android 客户端向 Google App Engine 后端进行身份验证? Google Cloud Endpoints 是否支持自定义用户 ID/密码身份验证?

【问题讨论】:

    标签: android google-app-engine google-cloud-endpoints webapp2


    【解决方案1】:

    这取决于身份验证的用途。您是否需要用户授权访问他们的数据,或者您只是保护提供给您的应用程序的 REST 服务?

    Cloud Endpoints 使用 OAuth 2.0,它可以使用 Google 帐户进行身份验证,或者如果不需要用户同意,您也可以为您的应用授权“服务帐户”。文档 [1] 是一个很好的信息来源。当然,没有什么能阻止您实现自己的身份验证方案或使用其他库,就像您将移动后端托管在其他平台上一样。

    另一个专门针对移动身份验证的好文档是 [2] 中的“Authenticating Users in Mobile Apps”。

    [1]https://cloud.google.com/appengine/docs/java/endpoints
    [2]https://developers.google.com/accounts/docs/MobileApps

    【讨论】:

    • 我使用的是自己的用户名/密码,因此无法使用 Google 帐户。
    【解决方案2】:

    我想你可以从https://github.com/coto/gae-boilerplate得到一些启发

    这是一个需要总结的巨大话题:)但我会尽力而为。

    首先您应该了解什么是 OAUTH 客户端流程和服务器流程。(您可以决定使用哪一个。)然后我将以 Facebook 为例。

    假设您在 Android 上使用 Facebook SDK 对您的用户进行身份验证,通常如果他们已经在其 Facebook 应用程序中进行了身份验证,您将获得 UserID 和 AccessToken 以及一些其他信息返回给您。这是 facebook 告诉你:“是的,你可以信任这个人。这是他的 id 和信息。”

    然后您可以利用该信息存储在您自己的用户数据库(或 GAE 术语中的数据存储)中。因此,稍后您可以在他们使用与您的用户绑定的特定 ID 登录时知道谁是谁。 (一个用户可以有不同的提供商 ID。)请记住这一点。

    现在回去看看 gae-boilerplate 实现:https://github.com/coto/gae-boilerplate/blob/master/bp_includes/handlers.py

    看三个处理程序类:LoginHandler、SocialLoginHandler、CallbackSocialLoginHandler

    【讨论】:

    • 野兽 - 我通读了自述文件,但无法理解。我是 Android / GAE 开发的新手。您能否帮助总结从 android 客户端到 GAE 的身份验证所涉及的步骤(使用 webapp2)。只是关于流程的高级摘要要点?
    • 这是一个需要真正总结的巨大话题:)
    • 我扩展了我的答案,杰克。看看吧。
    猜你喜欢
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多