【问题标题】:How to connect android users to my database / web application?如何将 android 用户连接到我的数据库/Web 应用程序?
【发布时间】:2017-07-16 15:53:44
【问题描述】:

我编写了一个带有几个表的简单 Web 应用程序。它有它的管理区域,您可以在其中管理它的表。基本的 CRUD 操作。

但是,我需要开发一个 Android 应用程序,它将通过 API 从此 Web 应用程序中检索信息。所以我要写一个简单的API方法来获取数据。有时Android用户会将其部分数据保存到数据库中。

Android 应用程序需要能够列出存储在数据库中的项目并通过 HTTP 为其中的一些项目添加书签。

对我来说,问题是如何使用 Android 的 Google 帐户实现 SingIn / SignOut 操作。例如,应用程序 GMail 始终处于登录状态(至少在我的设备上),我希望我的应用程序始终处于登录状态。

那么,如何管理用户收藏的项目?我应该创建一个表android_bookmarked_items (android_user_id, item_id) 吗?但是,android_user_id 应该是什么?我需要使用 OAuth 吗?

我是第一次进行这种关闭登录,我真的很困惑如何将此 Web 应用程序与 android 用户连接并管理每个用户的书签项目...

【问题讨论】:

    标签: java android oauth-2.0 google-signin


    【解决方案1】:

    您可以使用 Android AccountManager。查看How to get the Android device's primary e-mail address

    【讨论】:

    • 发出这些 HTTP 请求对我来说不是问题,而是创建此身份验证逻辑。用户没有注册过程,这需要在从 Play 商店安装应用程序或使用 android 的电子邮件地址自动登录我的应用程序并保持登录状态后自动完成。
    • 然后就可以使用安卓设备的AccountManager了。查看stackoverflow.com/questions/2112965/… 了解它是如何解决的。
    • 所以,我从 AccountManager 收到了这封主要电子邮件。我可以将它发送到我的应用程序并将其存储在那里。然后我还可以将书签项目附加到这封电子邮件。现在我看到的问题是如何保护这种通信,以便只有这个设备可以使用该电子邮件地址为项目添加书签?我的意思是,如果有人看到 http 请求,他或她会发现我正在使用 post 请求并且有两个字段:电子邮件和项目 ID。现在他或她可以使用相同的电子邮件和不同的项目 ID 重新创建此请求...
    【解决方案2】:

    我想我已经通过使用适用于 Android 的 Google 登录找到了解决方案。我在每个 POST 请求之前为当前登录用户获取 idToken 并在服务器端进行验证。同样从令牌中我得到属性sub 这是用户ID并将其存储在我的数据库中......

    Auth with a backend server

    但是,我对这些东西、令牌和使用 google 的身份验证非常陌生,我希望有经验的人确认我的解决方案是好的和安全的......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-15
      • 2020-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多