使用Android帐户管理器验证在我的服务器上使用FB登录的用户

时间:2015-02-23 15:45:28

标签: android facebook authentication oauth accountmanager

我对使用Android帐户管理器进行身份验证有疑问。我们有一个后端和一个Android应用程序,用户应该使用他的Facebook帐户登录我们的后端。目前我们为此目的展示了一个webview,它可以正常运行oAuth 2,但使用Android帐户管理器对用户来说更安全,更容易,因此我们想切换。我的问题是,服务器如何验证用户是否真的是他假装的人。由于我们无法信任App,因此我们必须从服务器端与fb进行通信,以验证用户是否真的是他假装的人。基于一个非常similar idea,我制作了下面的图表,询问这是否是正确的方法,或者我错过了什么:

Steps before the user is authenticated at "My Server" 流程看起来像这样:

  1. 用户想要使用自己的Facebook帐户登录
  2. 显示Android客户经理,他选择了Facebook帐户
  3. 用户授予访问权限#34;我的应用程序"被允许访问他的fb数据
  4. Android帐户管理员从Facebook服务器获取身份验证令牌
  5. "我的应用"现在有auth令牌,可以访问用户的fb数据
  6. "我的应用"将tokten传递给"我的服务器"
  7. "我的服务器"现在通过从fb服务器获取用户数据来检查令牌是否有效
  8. 如果令牌有效,那么"我的服务器"使用"我的应用程序"为当前会话返回正常的临时有效cookie。用户现在使用他的fb帐户登录My Server。
  9. 这是正确的方法吗?步骤6是一个好主意,将令牌传递给我的服务器"或者,还有更好的方法?顺便说一句Facebook就是一个例子,我们使用不同的身份验证提供商,如FB,谷歌和Twitter,但每个人的流量应该是相同的。

1 个答案:

答案 0 :(得分:9)

我不知道这是否正确。但我想分享一下我们如何在我们的案例中解决这个问题,这与你的解决方案非常相似。我们使用 Google Facebook 身份验证提供商。

我们的Android应用程序将令牌发送到服务器,然后服务器根据提供程序验证令牌,如果它已经过验证,那么如果不是我们显示相应的消息,则用户可以去。每当用户在服务器端打开应用程序时,如果令牌仍然有效,我们用来检查令牌的验证用户可以使用应用程序,如果不是我们只是将用户带回登录屏幕,这样用户可以再次验证自己,因为令牌得到一段时间后过期了。