如何安全地实施Facebook登录和设计数据库?

时间:2015-05-01 12:40:22

标签: android database api authentication facebook-login

我正在制作Android应用和API,我需要实施Facebook登录。我正在考虑这个问题:

  1. Android应用中的登录按钮,登录后获取FB用户ID。
  2. 将FB用户ID发送到我的API login方法。
  3. 在API中,检查发送的FB用户ID是否在数据库中。如果不是,我们会在数据库中插入新记录,例如id: 506, facebook-id:45645679843
  4. 如果它在数据库中或插入新记录后,我们会返回某种访问令牌。
  5. 我们将该访问令牌用于将来的API调用。
  6. 但是,我的解决方案看起来非常不安全。如果有人在没有FB用户ID的情况下进行API login调用,他将获得该帐户的访问令牌。那么我该如何解决这个问题呢?如果登录有效,我如何检查?

    修改 我可以在登录后获得类似登录令牌的内容,将该令牌发送到我的API并检查它是否在那里有效?或者FB SDK没有这样的功能?

    EDIT2: 您如何看待这种方法?

    1. Android应用中的登录按钮,登录后获取FB访问令牌。
    2. 将FB访问令牌发送到我的API login方法。
    3. 在我们的API中,我们使用访问令牌调用FB的图谱API以获取FB用户ID。
    4. 我们检查此FB用户ID是否在数据库中。如果不是,我们会在数据库中插入新记录。
    5. 如果它在数据库中或插入新记录后,我们将返回我们自己生成的访问令牌。
    6. 我们使用该访问令牌进行未来的API调用。

1 个答案:

答案 0 :(得分:1)

我认为不可能对您计划的系统结构进行此类验证。但是,你可以解决这个问题。
对于您正在构建的API,请确保使用' secret-token'与FBuser ID一起发送。这个秘密令牌

  

离。 yourapp-0122120123--123i1eqwejoe19_qqw13e !! sdokdf


只有您知道,所以即使其他人发送请求,如果传递的参数中没有秘密令牌,您也可以认识到这是一个无效的API调用。

我的假设是FBuserID会自动插入到请求中,并且您不允许用户在那里手动输入参数,基本上所有事情都是通过代码进行的,否则用户可能会发出虚假请求: - )< / p>