"使用Facebook登录" +自定义API - 适用于iOS应用

时间:2014-08-08 19:05:24

标签: ios facebook api security rest

假设我有一个iOS应用程序,它依赖于自定义REST API来处理帐户管理(注册,登录,密码重置,获取/设置用户相关数据)等事项。

假设我想添加一个'登录/注册Facebook'按钮,这样我们的用户就不必填写无聊的注册表。

我的数据库仍会包含这些用户,但他们没有用户名/密码 - 哈希/电子邮件,只会在应用内Facebook登录后与Facebook iOS SDK返回的“Facebook用户ID”相关联。

所以我的API会有一个调用,例如:

http://www.myapi.com/create_user_with_facebook?facebook_user_id=XXXXX

(好吧,不完全是,它不会是GET等等,但你得到了我的观点)

我担心的是,任何人都可以调用该API并使用任何公开的Facebook用户ID创建此类帐户,即使这些用户ID不属于他们。无数据会有危险或任何事情,但当Facebook帐户的合法所有者试图使用该应用程序时,该应用程序会说“不,对不起,这个Facebook帐户似乎已经与现有的应用程序帐户相关联!”

我不知道如何保护我们的平台免受这种“攻击”。

(API仍然允许以传统方式注册帐户或将现有帐户与Facebook帐户同步 - 就像现在这么多应用程序中常见的那样)

对于我应该采取哪些方向来解决这个问题的任何帮助将不胜感激!非常感谢。

2 个答案:

答案 0 :(得分:1)

任何人都可以使用其他人的电子邮件地址做同样的事情,如果他们可以访问您的API(即我可以使用其他人的电子邮件地址调用您的API并创建一个新帐户)。所以这不是“Facebook”问题。解决方案是保护您的API,如果您不希望随机用户直接在您的应用外访问它。

答案 1 :(得分:1)

在这种情况下,您可以做的是在Facebook成功登录自定义API后发送您的应用获取的访问令牌。然后,API将使用以下URL调用facebook以获取用户的emailId -

https://graph.facebook.com/v2.2/me?fields=email&access_token=ACCESS_TOKEN

然后,您的API会检查该电子邮件是否已存在于您的用户表中。如果是,则将成功的登录消息发送到应用程序,或者如果它不存在,您可以创建新条目并允许用户注册或仅发送错误消息。