如何使用自定义后端实现多个应用程序的Facebook登录?

时间:2015-03-11 23:33:29

标签: android ios facebook facebook-graph-api facebook-php-sdk

我在一家拥有5个iOS和5个Android应用套件的公司工作。他们都与我们构建的通用API交谈。我们支持传统的电子邮件/密码帐户创建和登录,但我们也支持Facebook并行登录。鉴于即将发生的Graph API v2.0更改,我认为现在是审核我们实施Facebook登录以使其达到最新标准的好时机。

我在Facebook开发者门户网站上找不到的内容是对我们在特定情况下应该做些什么的高级概述:

  • 我们有多个使用共享帐户进行身份验证的移动应用
  • 我们使用facebook登录和电子邮件/密码帐户
  • 我们拥有所有应用与
  • 对话的自定义后端API

这是我们当前实施FB登录的简要演练:

  1. 应用提示用户使用FB登录(或输入电子邮件登录/创建帐户)
  2. 如果用户点击FB按钮,则会发生FB的登录魔术,并且应用会获得一个传递给我们的API的令牌
  3. API服务器使用facebook-php-sdk调用/me以获取用户的图形ID,名称和电子邮件
    • 如果我们没有收到回复邮件,则FB登录失败
  4. 使用来自FB的电子邮件,我们会查看是否已有该电子邮件的帐户
    • 如果该电子邮件中没有帐户,我们会使用该电子邮件和名称
    • 创建一个新帐户
  5. 一旦我们拥有了一个用户帐户(通过创建或查找),我们就会使用该帐户存储令牌(对应用而言是唯一的)
  6. 此时我们告诉应用程序用户已成功通过身份验证
  7. 我们应该做什么?我们是否应该费心存储FB令牌?

1 个答案:

答案 0 :(得分:0)

我没有在服务器上检查用户的电子邮件,而是选择用户ID (为什么让2-3%的用户离开您的应用只是因为我们无法抓取他们的电子邮件IDS)。

但无论如何在图片中v2,我们不能获取用户的原始ID;返回的ids现在是app-scoped!

现在回答你的问题。

  1. 您应该在数据库中保存这些 app scoped ids (可能是一对多的映射)。而且,由于您只是注册了具有电子邮件ID的用户,因此根本不会成为问题。

    好处?您可以随时轻松访问其个人资料数据/<id>?access_token=<app-access-token>

  2. 保存用户访问令牌对我没有任何意义,因为它会在大约2小时后到期。虽然您可以extend the validity用户访问令牌,但您可以随时在客户端本身获取新令牌。所以只有在服务器上做一些对你很重要的东西/操作时才存储它。

  3. 如果您要在用户的会话未激活时在用户的个人资料中发布Open Graph个故事或正常feed,您可以使用应用访问令牌发布。