java - Android Sync Provider 服务器端如何实现?

标签 java android rest sync android-syncadapter

我有一个正在运行的基于 J2EE 的 Web 应用程序,用于托管在云中的销售点,数据库正在使用 postgresql。现在我正在为销售点构建一个 android 应用程序。对于数据sync,我已经阅读了很多如何创建SyncAdapter 等内容,但关于服务器端开发的内容却很少。我的第一个问题:

  1. 如何创建身份验证 token ?谁将创建此 AuthToken?我的服务器端 RESTful 网络服务或设备 SyncAdapter 本身?谁应该启动 AuthToken 到期 - 设备或服务器 webservice

  2. 目前我的 Web 应用程序获得了很多用户级别的权限。当数据来自设备进行同步时,我需要在同步前检查用户权限。我是否需要在我的服务器端 webservices 中自定义编写这些权限检查?

最佳答案

  1. 简而言之,服务器负责创建 AuthToken。

    为了更好地理解,您应该阅读 OAuth2 specification .尽管您可以编写自己的更简单的解决方案,但我建议您使用 OAuth2 以避免一些陷阱。在您的情况下,身份验证授权类型“Resource Owner Password Credentials ”似乎最合适。

    Apache Oltu是一个用 Java 实现 OAuth2 的框架,但是你仍然需要自己处理一些事情,比如 token 的持久化。

  2. 是的,您必须检查服务器端的权限。不要相信客户端!

    此外,您可以通过在 Android 中使用不同的 token 类型来更严格地限制应用程序。例如:当您从服务器应用程序和 Android 应用程序访问 Web 服务时,您可以根据 token 类型(Android 与内部)区分权限。或者,您可以为应用的用户提供一个选项,以将应用的访问权限限制为仅读取操作。

关于java - Android Sync Provider 服务器端如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16756331/

相关文章:

java - Google Play Billing 1.0 无接口(interface)方法 getBuyIntentExtraParams

android - 如何使用点击 ListView 中的项目来更新数量

rest - 如何从 ddd 中的另一个限界上下文检索数据?

java - 如何通过网络传递对象的静态数据?

java - 如何设置 libpd 以在 Java 中使用?

android - 错误 : 'Spinner' does not contain a definiton for getSelectedItem'. ..'

jquery - 无法将 json 对象传递给 python 服务器程序

javascript - dijit.form.ComboBox 无法与 dojox.data.JsonRestStore 一起使用

JAVA:调度线程工作的最佳方式是什么?

java - 什么类型的 Java/Swing 布局可以进行停靠和/或锚定?