Goal:
Assumptions:个 对于那些 Select 不使用Facebook登录的用户,有一个本地身份验证(和注册)系统.
Details:
- 假设我们希望为用户提供登录Facebook的选项,而无需为我们的系统创建单独的帐户/凭据.
- 因为我们支持自己的原生身份验证机制(用户名和密码),所以我们有自己的用户ID,并颁发一个身份验证令牌,用于初始凭证验证后的后续交互.
我很惊讶Facebook在他们的开发人员文档中没有这方面的最佳实践.所有现有的文档要么是假设你将FB auth构建到一个网站中,要么是一个独立的移动应用程序,没有需要身份验证的服务.
这是我对如何设计的初步 idea ,但我想验证一下它是否正确.
- 客户端弹出Facebook iOS登录
- UI用户使用Facebook凭据登录并获得访问令牌
- iOS应用程序将访问令牌传递到我们的服务器
-
我们的服务器使用访问令牌与FB图API通信,以(A)验证令牌并(B)获得该访问令牌的FB用户ID.
例如,我们的服务器将调用https://graph.facebook.com/me/?access_token=XYZ,这将在JSON对象中返回配置文件信息
假设它有效,我们的服务器将从JSON对象中提取用户ID,并判断该用户是否已经拥有帐户.如果是,我们会向客户端发布我们自己身份验证票证,以用于该会话.如果用户没有帐户,我们将使用Facebook用户ID创建一个新帐户,分配我们自己的惟一用户ID,并发布我们的身份验证票.
- 然后,客户端在需要身份验证的后续交互上传递身份验证票证.
对我来说,这似乎是正确的方法,但不确定我是否错过了一些非常基本的东西,并走上了错误(复杂)的道路.