首页 文章

如何使用Facebook令牌和用户名/密码构建PHP API身份验证

提问于
浏览
0

我正在使用silex(php微框架)构建一个非常简单的API . 我对如何使用Facebook连接或用户名/密码验证用户有所了解 .

我想构建此API以向我的移动应用提供数据 . 我的API使用HTTPS . 使用Facebook进行身份验证:

  • Facebook Connect发生在移动应用上

  • 移动应用程序正在将用户令牌和facebook_id发送到API

  • API检查用户的Facebook ID请求 /me?token=...

  • API检查Facebook app_id是否正确 /app?token=...

    • 用户确实存在并经过身份验证

现在使用登录名/密码:

  • 移动应用程序发送用户名和编码密码

  • API检查组合是否正确

    • 用户确实存在并经过身份验证

问题是关于用户会话 . 我真的不想对每个请求进行测试(例如,对于Facebook认证,有2个请求到Facebook) .

我正在考虑为用户打开一个会话并存储某种API令牌 . 令牌将被哈希和盐渍(盐user_id时间传递) . 我会将它存储在会话表中,并且只需要检查令牌是否仍然有效并且属于请求用户 .

因此,移动应用程序只会为每个请求发送用户ID api令牌 .

你怎么看待它?你有一个更好的解决方案,保持简单吗?或者你看到这个设计有什么问题吗?

干杯,马克西姆

2 回答

  • 1

    Facebook的身份验证流程基于OAuth 2.0协议 . 有关该协议的更多信息,请访问here .

    流程遵循以下一般步骤:

    • 确定某人是否已登录 .

    • 如果他们没有登录,请提示他们这样做(使用登录对话框) .

    • 交换安全代码以确认身份 .

    • 生成访问令牌 .

    一旦您的客户端获得了访问令牌,它就应该存储该令牌 . 然后,客户端可以使用访问令牌代表用户执行API请求 . 因此,一旦拥有访问令牌,就不需要再次执行上述步骤(除非该令牌已过期) .

    Facebook提供了许多SDK供您使用,包括几个移动SDK . 我建议您为移动应用使用适当的SDK . 使用Facebook实现OAuth 2.0对话框比手动执行任何操作要容易得多 . 开始阅读here .

  • 0

    您可以在第一次用户登录时保存Facebook Id . 然后在检查活动的facebook用户后,您可以在Mysql中搜索并比较现有的Facebook Id .

相关问题