我越来越糊涂了。
我必须为移动应用程序编写 Java Serverapplication。我们在该应用程序中拥有自己的用户管理,这意味着用户可以在完全不使用 OAuth-Provider 的情况下在我们的服务器上注册和登录。
现在我希望用户能够通过 OAuth Provider 进行注册。
这些是我看到的选项:
让用户仅在本地注册。
优势:
- 移动应用程序可以使用能够为我们的应用程序登录和检索访问令牌的框架
- 一切都是由平台本身预先设置的,所以没有 GUI 工作
坏处:
- 服务器如何知道用户是否登录?解决这个问题的一种方法可能是将访问令牌发送到服务器并让服务器向提供者发起请求以检查令牌是否有效。
- 对于注册,我必须将客户端从提供商那里获得的所有用户信息发送到我们的服务器。
我不喜欢这个选项,因为我会发送 Userdata 和 Accesstoken arround。是的,它当然会通过 https 加密,但感觉不对。
让用户通过我们的服务器注册
用户请求 OAuth 提供者本身检索您可以用来请求访问令牌的代码。将此代码发送到服务器并让服务器检索访问令牌。
优势:
- 服务器现在可以确定用户已登录
- 服务器可以从 OAuth 提供者本身检索有关用户的所有用户特定信息(例如用户名等),而无需发送 arround。
- 在登录时,您可以重复此操作,以确保用户正确登录
坏处:
- 我必须编写 OAuth 连接器(或为此使用一些库)
- 我们无法使用 sdk,因为它们只是返回实际的访问令牌。
我们仍然更喜欢第一个选项(仅限本地注册)因为
- 他们想使用 SDK。“因为每个人都这样做。”
- 如果用户第一次启动应用程序并且他已经登录(即使用 FB 客户端),他只需要接受我们为应用程序设置的范围。
- 更容易处理实际登录,导致 sdk 为它制作
有谁知道如何正确地做这样的事情?这两种解决方案对我来说似乎都有点错误。