繁体   English   中英

如何显示用户已连接到 GitHub

[英]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 徽标下显示此“已连接”状态。

  1. 当您在 Heroku 上注册时,GitHub 集成的状态为“not_connected”。 如果您访问设置页面,您会看到“连接到 GitHub”按钮。
  2. 在某些时候,在 Heroku 仪表板中,您已单击“连接到 GitHub”按钮并已授权 Heroku 的应用程序用于 GitHub。 这是您被重定向到callback_url的地方
  3. 在这个特定时间,当您在callback_url页面上时,Heroku 已在其数据库中记录了您帐户的 GitHub 集成的新状态。 它被设置为“已连接”。 Heroku 可能与access_tokenrefresh_token一起保存。
  4. 每次访问应用程序的设置页面时,Heroku 都会显示您已连接,因为它在其数据库中具有状态。
  5. (可选)当 Heroku 使用您的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.

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