繁体   English   中英

通过我的OAuth2 API使用Facebook登录

[英]Using Facebook Login with my OAuth2 API

我有一个使用OAuth2进行身份验证的API。 效果很好,我可以使用“密码”授予类型让用户使用存储在我应用中的用户名和密码来获取访问令牌。

现在事情变得有些棘手了。 我想拥有一个可以与此API通讯的iOS应用。 没问题,用户可以为我提供他们的用户名和密码,我可以为他们提供访问令牌。

但是我希望能够使用Facebook登录名允许用户注册并登录我的API。

我的问题是:

  1. 据我所知,Facebook的iOS SDK将为我提供访问令牌和用户的个人资料ID。 我如何处理此信息? 该信息应如何与普通的“用户名和密码”用户一起存储?
  2. 从用户在其iOS设备上登录Facebook并获得对我的API的访问令牌,iOS App和我的服务器之间的登录流程是什么?

语言特有的答案会很棒!

谢谢

关于什么:

  1. 在客户端中获取FB-AT和FB-ID(在具有SSO的应用中或通过重定向的Web视图)
  2. 使用FB-ID和FB-AT向YOURAPI-AuthenticationServer请求YOURAPI-AT
  3. YOURAPI-AuthenticationServer针对FB-AuthenticationServer检查FB-ID和FB-AT的有效性
  4. 如果确定,则YOURAPI-AuthenticationServer返回YOURAPI-AT(以及可选的YOURAPI-RefreshToken)

现在,您可以使用YOURAPI-AT来访问API :),并可以选择使用YOURAPI-RT来刷新AT,因此您不必一直都在使用FB。

OAuth2流中没有任何东西可以支持帐户关联,因此您必须自己构建它。

您将必须登录FB,从中获取令牌,调用userinfo端点,然后将用户信息存储在数据库中,以便FB中的特定用户与帐户数据库中的用户相对应。

解决此问题的最优雅的方法是创建一个中介服务,该服务将用户帐户数据库和FB桥接起来,因此您的应用仅与一项服务交互:

Your app -> Identity Service -+-> Your user account
                              |
                              +-> FB

但是,这需要做很多工作(我知道,因为这本质上是我们构建的,并且并非微不足道)。

无论如何,您的API可能必须继续使用令牌。

这是我们在帐户关联方面写的文章 ,可能会激发您实施类似的操作。 但是,正如我所说,这是自定义的,不是协议的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM