我正在尝试使用 Python 和 Falcon Web 框架通过社交平台(Github、Facebook、Instagram)为带有登录选项的 RESTfull API 实现 OAuth2 服务器。但我一直在努力理解这件事应该如何运作。
1.1。在 API 方面,我正在创建一个端点/auth/login/github
,它基本上会告诉移动应用程序将客户端重定向到 Github.com 授权页面 - github.com/login/oauth/authorize
1.2。在 Github 授权页面上,用户将看到以下屏幕:
1.3。按下授权后,用户将callback
使用新授予的临时授权码进入参数(Github OAuth 服务配置)中指定的页面。在我的情况下,URL 将如下所示:my.api.com/auth/callback/github?code=AUTH_CODE
2.1。收到回调请求后,我正在解析/提取传递的授权码并从后端查询 Github.com 以兑换授权码并获取访问令牌(使用我的客户端 ID和客户端密钥发送POST 请求github.com/login/oauth/access_token
) 2.2。如果一切顺利,Github 将使用Access Token回复我的 POST 请求,我可以使用它来获取用户个人资料详细信息(例如电子邮件)
3.1。现在我知道通过 Github 的授权是成功的(因为我收到了用户的电子邮件),我可以向该用户授予我自己的访问令牌,这样他就可以查询我的 API 端点。我只是通过添加随机生成的OAuth2 令牌并将其插入到我的数据库中来做到这一点,同时通过使用深层链接(例如:myapp://token)将用户重定向到移动应用程序来将相同的令牌返回给用户。3.2. 最后,移动应用程序可以通过向每个请求添加以下标头来查询我的 API 端点Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
这有意义吗?这是对 RESTfull API 进行社交授权的正确方法吗?