iOS、REST API - Facebook 登录

Posted

技术标签:

【中文标题】iOS、REST API - Facebook 登录【英文标题】:iOS, REST API - Facebook login 【发布时间】:2015-09-01 15:06:21 【问题描述】:

我正在研究如何开发 ios 应用,我需要弄清楚我应该如何构建它。

架构

我有一个外部数据库、一个 REST api(作为数据库和应用程序之间的接口)和 iOS 应用程序。

问题

我希望用户通过简单的表单或 Facebook 登录按钮进行身份验证,但在每种情况下,数据库中的“用户”表都必须填写默认字段,例如姓名、姓氏、电子邮件、头像、密码(?)。

对于标准身份验证没有问题,但对于 Facebook 身份验证,我对理论感到很困惑:

我应该使用访问令牌吗?怎么样? 当用户通过 Facebook 进行身份验证时,我没有他的密码,那么如何从数据库中获取他的信息?以标准方式,我会给数据库用户名和密码,它会返回例如 id 字段。

对不起我的英语。

【问题讨论】:

【参考方案1】:

您可以使用当前登录用户的访问令牌

[FBSDKAccessToken currentAccessToken]

并将其发送到您的 REST api。从那里您可以检索您需要的所有信息并将其保存到您的数据库中(当然除了用户密码)。如果用户首次在您的应用中登录,请在您的数据库中插入新用户并保存用户的 Facebook 用户 ID。

使用身份验证和授权的整个想法不是访问另一个应用程序的用户密码,而是用户授权(确认)您的应用程序以具有特定权限访问他/她的帐户。

以下是您需要的分步解答: Design for Facebook authentication in an iOS app that also accesses a secured web service

【讨论】:

太棒了!正是我想要的。谢谢! 既然我的回答对你有帮助,你能接受吗? 还有一个问题:应用程序中的登录返回访问令牌,因此,在应用程序中,我已经能够检索用户信息。相反,您说我应该将访问令牌发送到 REST API,并从那里检索信息。你能解释一下为什么我应该从其他 api 而不是从应用程序中获取信息吗? 这不是必须的。您也可以从您的应用程序中检索信息。它们之间的差异很小。 如果您从您的 REST API 中检索信息,您可以轻松地维护和处理您的应用与 fb 之间的连接。例如,如果用户的权限发生变化,您可以在后端快速更新您的代码,而不是在应用程序中更新您的代码,因此您也需要在应用商店中更新它。另一件事是,如果您可以选择让用户使用其他 api 登录,那么在您的后端代码中,您可以检查该用户是否还有另一个使用另一个 api 的帐户,因此不需要在您的分贝。【参考方案2】:

您需要保存登录请求返回给您的currentAccessToken

然后,使用 Facebook 的 Graph API、登录请求中返回的userID 和用户访问令牌,您可以请求一个包含电子邮件地址的用户对象,假设您在登录中添加了电子邮件权限请求。

还可以使用 Graphi API 使用登录请求中返回的 userID 检索用户的照片:

50x50 像素

<img src="//graph.facebook.com/fid/picture">

200 像素宽度

<img src="//graph.facebook.com/fid/picture?type=large">

【讨论】:

以上是关于iOS、REST API - Facebook 登录的主要内容,如果未能解决你的问题,请参考以下文章

使用 Facebook 进行身份验证的网站的 REST API

使用旧的 rest api 的 Facebook 会话密钥

接受 facebook 登录到我的 REST API

从移动设备登录 Spring Security、Rest api 和 Facebook

通过我的 REST API 和 Facebook 进行用户身份验证

使用 facebook 登录并使用 oauth 2.0 对 REST api 调用进行身份验证