GitHub 上的应用程序允许您自动化并改进工作流程。 您可以构建应用程序来改进工作流程。
GitHub 应用程序是官方推荐的与 GitHub 集成的方式,因为它们提供更精细的数据访问权限,但 GitHub 支持 OAuth 应用程序 和 GitHub 应用程序。 有关选择应用程序类型的信息,请参阅“GitHub 应用程序和 OAuth 应用程序之间的差异”。
有关构建 GitHub 应用程序 的过程演练,请参阅“构建第一个 GitHub 应用程序”。
关于 GitHub 应用程序
GitHub 应用程序 是 GitHub 中的一流产品。 GitHub 应用程序 应用程序以自己的名义运行,通过 API 直接使用自己的身份进行操作,这意味着您无需作为独立用户维护自动程序或服务帐户。
GitHub 应用程序 可以直接安装在组织和用户帐户上,并获得对特定仓库的访问权限。 它们拥有内置 web 挂钩和狭窄的特定权限。 设置 GitHub 应用程序时,可以选择希望它访问的仓库。 例如,您可以设置一个名为 MyGitHub
的应用程序,允许它在 octocat
仓库且仅在 octocat
仓库写入议题。 要安装 GitHub 应用程序,您必须是组织所有者或在仓库中具有管理员权限。
默认情况下,只有组织所有者才可管理组织中 GitHub 的设置。 要允许其他用户管理组织中的 GitHub 应用程序,所有者可以向他们授予 GitHub 应用程序管理员权限。 请参阅“GitHub 应用程序”,了解如何在组织中添加和删除 GitHub 应用程序管理员。
GitHub 应用程序 是需要托管在某处的应用程序。 有关涵盖服务器和托管服务的分步说明,请参阅“构建第一个 GitHub 应用程序。”
要改进自己的工作流程,可以创建一个包含多个脚本或整个应用程序的 GitHub 应用程序,然后将此应用程序连接至许多其他工具。 例如,您可以将 GitHub 应用程序 连接至 GitHub、Slack、自己可能拥有的其他内部应用程序、电子邮件程序或其他 API。
创建 GitHub 应用程序 时,请记住以下方法:
-
GitHub 应用程序 的操作应独立于用户(除非此应用程序使用用户至服务器令牌)。
-
请确保 GitHub 应用程序 与特定仓库集成。
-
GitHub 应用程序 应该连接到个人帐户或组织。
-
不要指望 GitHub 应用程序 知道并尽其所能。
-
如果您只需要“使用GitHub登录”服务,请不要使用 GitHub 应用程序。 但是,GitHub 应用程序 可以使用用户识别流程登录用户账户和执行其他操作。
-
如果您只想作为 GitHub 用户并做用户可以执行的所有操作,请不要构建 GitHub 应用程序。
要开始开发 GitHub 应用程序,请先“创建 GitHub 应用程序”。
关于 OAuth 应用程序
OAuth2 是一种协议,它允许外部应用程序请求授权在不使用密码的情况下访问用户 GitHub 帐户中的私有信息。 此协议优先于基本验证,因为令牌可能仅限于特定类型的数据,用户可以随时撤销。
警告: 从 OAuth 应用程序 撤销所有权限将会删除应用程序代表用户生成的 SSH 密钥,包括部署密钥。
OAuth 应用程序 使用 GitHub 作为身份提供程序以验证为授予应用程序访问权限的用户。 这意味着,当用户授予 OAuth 应用程序 访问权限时,将授权访问其帐户有权访问的所有仓库,以及他们所属的、未阻止第三方访问的任何组织。
如果要创建比简单脚本的处理范围更复杂的流程,构建 OAuth 应用程序 是一个很好的选择。 请注意,OAuth 应用程序 是需要托管在某处的应用程序。
创建 OAuth 应用程序 时,请记住以下几点:
- OAuth 应用程序 在所有 GitHub 中(例如,在提供用户通知时)应始终代表经身份验证的 GitHub 用户。
- 通过为经身份验证的用户启用“使用 GitHub 进行登录”,OAuth 应用程序 可用作身份提供程序。
- 如果您希望应用程序作用于单个仓库,请不要构建 OAuth 应用程序。 使用
repo
OAuth 作用域,OAuth 应用程序 可以作用于经验证用户的所有仓库。 - 不要构建 OAuth 应用程序 作为团队或公司的应用程序。 OAuth 应用程序 将验证为单个用户,因此,如果有人创建了 OAuth 应用程序 供公司使用,那么一旦他们离开公司,其他人将无法访问它。
有关 OAuth 应用程序 的更多信息,请参阅“创建 OAuth 应用程序”和“注册应用程序”。
个人访问令牌
个人访问令牌是一个字符串,与 OAuth 令牌功能相似,您可以通过作用域指定其权限。 个人访问令牌还与密码类似,但您能拥有很多令牌,而且可以随时撤销对每个令牌的访问权限。
例如,您可以启用个人访问令牌,以写入仓库。 然后,如果您运行 cURL 命令或编写脚本,在仓库中创建议题,需要传递个人访问令牌进行验证。 您可以将个人访问令牌存储为环境变量,以免每次使用时都要输入。
使用个人访问令牌时,请牢记以下几点:
- 记得只能用此令牌代表您自己。
- 您可以执行一次性 cURL 请求。
- 您可以运行个人脚本。
- 不要为整个团队或公司设置脚本。
- 不要设置共享用户账户以用作自动程序用户。
确定要构建的集成
开始创建集成之前,需要确定访问、验证和与 GitHub API 交互的最佳方式。 下图提供了一些问题,您在决定是否对集成使用个人访问令牌、GitHub 应用程序 或 OAuth 应用程序 时可以考虑这些问题。
请考虑关于您的集成需要如何操作及它需要访问什么等问题:
- 我的集成是只像我一样,还是更像一个应用程序?
- 我是否希望它作为单独的实体独立于我运行?
- 它是否能访问我可以访问的一切,或者说我想限制它的访问权限?
- 它是简单还是复杂? 例如,个人访问令牌对简单的脚本和 cURL 有益,而 OAuth 应用程序 可以处理更复杂的脚本。
请求支持
有关 GitHub 应用程序、OAuth 应用程序 和 API 开发的问题、漏洞报告和讨论,请访问 GitHub API 开发和支持论坛。 该论坛由 GitHub 工作人员管理和维护,但不能保证发布到论坛的问题都会得到 GitHub 工作人员的回复。
对于以下问题,请考虑使用联系表直接联系 GitHub Support:
- 要保证得到 GitHub Enterprise Server 工作人员的回应
- 涉及敏感数据或私人问题的支持请求
- 功能请求
- 关于 GitHub Enterprise Server 产品的反馈