iOS,RESTAPI-Facebook登录

iOS,RESTAPI-Facebook登录,ios,facebook,rest,facebook-graph-api,authentication,Ios,Facebook,Rest,Facebook Graph Api,Authentication,我正在研究如何开发iOS应用程序,我需要弄清楚应该如何构建它 架构: 我有一个外部数据库、一个RESTAPI(作为数据库和应用程序之间的接口)和iOS应用程序 问题: 我希望用户通过简单的表单或Facebook登录按钮进行身份验证,但在每种情况下,数据库中的“用户”表都必须填写默认字段,如姓名、姓氏、电子邮件、个人资料图片、密码(?) 对于标准身份验证,没有问题,但对于Facebook身份验证,我对理论感到相当困惑: 我应该使用访问令牌吗?怎么做 当一个用户通过Facebook认证时,我没有他

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

架构

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

问题

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

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

  • 我应该使用访问令牌吗?怎么做
  • 当一个用户通过Facebook认证时,我没有他的密码,那么如何从数据库中获取他的信息呢?以标准的方式,我将给数据库用户名和密码,它将返回例如id字段

对不起,我说的是英语。

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

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

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

50x50像素

200像素宽
您可以使用当前登录用户的访问令牌

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

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

以下是您需要的逐步答案:

太好了!这正是我想要的。非常感谢。因为我的回答对你很有帮助,你能接受吗?还有一个问题:应用程序中的登录返回访问令牌,因此,在应用程序中,我已经能够检索用户信息。相反,您说我应该将访问令牌发送到RESTAPI,并从那里检索信息。你能解释一下为什么我应该从RESTAPI而不是应用程序中获取信息吗?这不是必须的。您还可以从应用程序中检索信息。两者之间的区别很小。如果您从REST API检索信息,您可以轻松维护和处理应用程序与fb之间的连接。例如,如果用户的权限更改,您可以在后端快速更新代码,而不是在应用程序中更新代码,因此您还需要在appstore中更新代码。另一件事是,如果您可以选择一个用户使用其他api登录,那么在您的后端代码中,您可以检查该用户是否还有另一个使用其他api的帐户,因此不需要在db中创建第二个用户。
<img src="//graph.facebook.com/{{fid}}/picture?type=large">
[FBSDKAccessToken currentAccessToken]