网站,API和iPhone应用程序允许用户通过Facebook登录


Website, API and iPhone App let users login via Facebook

我正在构建一个网站(PHP),API(PHP)和一个原生的iPhone应用程序。我希望用户使用他们的Facebook帐户登录,以便他们可以通过网站或iPhone应用程序发布评论/上传照片到我们的服务器/数据库。这也将节省我创建完整用户注册系统的时间。

我正在尝试弄清楚如何为这种解决方案创建统一的体系结构。我正在考虑以下事情:

注册:

  • 创建一个包含我的用户的数据库表(表将包含以下字段:id、facebook_uid、名字、姓氏)
  • iPhone应用程序登录场景:用户通过Facebook登录;按允许授予我的应用程序权限;返回带有access_token的应用程序(存储在他的手机上)。之后调用我自己的 API 以使用以下信息注册用户(如果尚未在数据库中注册):facebook_uid、名字和姓氏。
  • 网站登录场景:用户通过Facebook登录;重定向到我配置的返回URL,并使用以下值facebook_uid,名字和姓氏注册用户(如果尚未在数据库中)

发布产品评论

  • 苹果手机应用:使用以下参数输入调用我的 API:review_text、facebook access_token。然后,我的 API 将使服务器端调用 facebook 以获取facebook_uid。当我检索到facebook_uid时,我将这个Facebook用户的评论记录插入到数据库中。(与其发送 Facecbook access_token,我可以直接将facebook_uid值发送到我的 API。但我认为这可能不太安全,因为任何人都可以插入对其他用户行为的评论,如果他们知道他们的facebook_uid)

  • 网站:在Facebook Connect PHP库的帮助下,FB登录会话可用,因此我可以通过阅读会话facebook_uid直接插入服务器端的评论。

这是使用Facebook作为自己平台登录的正确和安全的方式吗?或者我可以使用任何其他PHP模块/库来简化它吗?

Facebook在这里有一个现有的APIhttp://developers.facebook.com/docs/guides/web/

该页面还包含有关如何实现此目的的教程

对于iPhone特定的Facebook登录,请查看此处https://developers.facebook.com/docs/mobile/ios/build/#implementsso

我也有类似的情况。将access_token保存在手机上似乎是一个好主意,然后通过您的 API 传递它以验证您自己的数据库上的用户似乎也是一个好主意。

加密access_token并将其存储在您自己的数据库中并对其进行检查,而不是不断pingFacebook API,这难道不是同样安全的吗,即:

  1. 通过Facebook登录,获取Facebook UID和access_token。
  2. 将 UID 和/或access_token存储在通过 md5/sha 加密的数据库中。
  3. 每次您的 API 进行调用
  4. 时,传递access_token并将其与存储的 API 进行检查以验证调用?