[英]How to display that a user is connected to GitHub
我正在开发一个像 Heroku 这样的网站。 我很困惑我应该如何处理 Github OAuth 部分? 当您想在 Heroku 注册并登录时,您不能使用 OAuth 方式(使用 Github 登录/注册)。
但登录后您可以创建应用程序。 现在,在 Heroku 中上传代码的选项之一是将您的 Heroku 帐户连接到您的 Github 帐户。
我的问题
当用户登录时,我如何将用户重定向到另一个页面,并且在身份验证(Github OAuth)之后,我如何检测到该用户以前登录并且用户不需要重新登录?
正是 Heroku 所做的。
我不明白如何将另一个数据发送到 Github OAuth 登录页面并在回调 url 中将其取回,以检测哪个用户现在登录并保存他/她的 access_token 数据库。
并不是说我使用 expressjs express-session sequelize 和 ejs。
GitHub 与所有基于 OAuth 的 API 一样,要求代表用户对 API 发出的每个请求都使用access_token
进行身份验证。 如果您没有在请求旁边传递access_token
,则请求将失败并显示401 Unauthorized
状态代码。
如果随机用户接受了您的应用程序,则无法询问 GitHub。 这不是在 OAuth 框架中实现的东西 - 因为它可能导致安全漏洞。 因此,作为应用程序的所有者,您有责任记录哪个用户授权了您的应用程序。
考虑到这一点,让我们尝试总结 Heroku 必须实现的不同步骤,以在 GitHub 徽标下显示此“已连接”状态。
callback_url
的地方callback_url
页面上时,Heroku 已在其数据库中记录了您帐户的 GitHub 集成的新状态。 它被设置为“已连接”。 Heroku 可能与access_token
和refresh_token
一起保存。access_token
向 GitHub API 执行请求时,它可以确认连接仍然有效。 如果请求因401 Unauthorized
失败,Heroku 可以更新其数据库并将您的 GitHub 集成状态重置为“not_connected”。对于 GitHub API 以及任何其他基于 OAuth 的 API,此工作类似。 如果您计划与多个 API 集成,我强烈建议您使用 API 集成管理器,例如Pizzly 。 它将帮助您专注于业务逻辑(“我的用户是否已连接? ”)并为您完全处理 OAuth 流程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.