简体中文
# GitHub 应用与 OAuth 应用:选择合适的 GitHub 连接方式
比较 GitHub 应用和 OAuth 应用在 Logto 集成中的表现。了解安全性、权限管理、令牌管理等关键差异,帮助你为应用程序选择合适的 GitHub 认证方式。
当你在 Logto 应用中集成 GitHub 认证时,有两种选择:GitHub 应用和 GitHub OAuth 应用。虽然这两者都能实现 “使用 GitHub 登录” 功能,但在安全性、令牌管理和 API 访问上,它们的体验有本质的不同。本指南会帮助你了解关键差异,并根据你的实际需求选择合适的方案。
背景:两种 GitHub 集成路径
Logto 当前的文档指导你设置一个 GitHub OAuth 应用 来实现社交登录。这是更简单直接的一种方案,非常适合基础身份认证。但 GitHub 应用则是 GitHub 官方现代化、推荐的方式,支持增强的安全特性和更细致的权限控制。
这样理解:OAuth 应用就像给别人一把你家大门的万能钥匙——一旦授权就能获得广泛访问。GitHub 应用更像是一套智能门禁系统,对不同房间分别设定独立的访问码——用户可以授权你只获得真正所需的精确权限。
一眼看懂主要区别
权限:广泛 vs. 细粒度
- OAuth 应用 使用广泛作用域——请求
repo就能获得完整的仓库权限。 - GitHub 应用 支持细粒度权限——你可以只申请“议题:只读”而无需访问代码。用户还可以在安装时选择具体的仓库,无需全盘授权。
令牌安全性:永久 vs. 会过期
- OAuth 应用 发放永不过期的令牌(除非手动撤销),没有刷新机制。
- GitHub 应用 使用短时令牌(1 小时有效)并自动支持刷新——对于长时运行应用来说要安全得多。
身份:用户 vs. 机器人
- OAuth 应用 总是以授权的用户身份(比如
@octocat)执行操作,共享最高 5,000 次/小时的速率限制。 - GitHub 应用 可独立运行,拥有自己专属的机器人身份(如
@my-app[bot]),并且速率限制可随使用规模自动扩展——非常适合自动化场景。
访问控制:全有全无 vs. 有选择性
- OAuth 应用 需要针对所有可访问资源进行一次性授权。
- GitHub 应用 允许用户选择具体要安装到哪些仓库,且可在权限变更时收到 webhook 通知——带来更好的透明度和控制力。
持久性:依赖用户 vs. 独立
- OAuth 应用 与授权用户绑定——如果开发者失去权限或离开团队,应用将无法继续工作。
- GitHub 应用 即使安装者离开组织,依然可以正常运行——保证自动化和集成场景下服务不中断。

