{"meta":{"title":"关于创建GitHub应用","intro":"使用 GitHub Apps 可以构建集成来自动执行流程并扩展 GitHub 的功能。","product":"应用","breadcrumbs":[{"href":"/zh/apps","title":"应用"},{"href":"/zh/apps/creating-github-apps","title":"创建GitHub应用"},{"href":"/zh/apps/creating-github-apps/about-creating-github-apps","title":"关于创建GitHub应用"},{"href":"/zh/apps/creating-github-apps/about-creating-github-apps/about-creating-github-apps","title":"关于创建应用"}],"documentType":"article"},"body":"# 关于创建GitHub应用\n\n使用 GitHub Apps 可以构建集成来自动执行流程并扩展 GitHub 的功能。\n\n## 关于 GitHub Apps\n\nGitHub App 是一种集成类型，你可以构建它来与 GitHub\n交互并扩展其功能。 可以构建 GitHub App 来提供灵活性并减少流程中的冲突，而无需登录用户或创建服务帐户。\n\nGitHub Apps 的常见用例包括：\n\n* 自动化任务或后台进程\n* 支持“使用 GitHub\n  登录”，从而让用户能够使用其 GitHub 帐户登录，以便在生态系统中提供其标识\n* 作为开发人员工具，允许用户通过登录你的 GitHub 来使用 GitHub App，然后代表他们执行操作\n* 将工具或外部服务与 GitHub\n  集成\n\n与 OAuth apps 一样，GitHub Apps 使用 OAuth 2.0，可以代表用户执行操作。 与 OAuth apps 不同的是，GitHub Apps 也可以独立于用户进行操作。\n\nGitHub Apps 可以直接安装在组织和个人帐户上，并获得对特定仓库的访问权限。 它们拥有内置 web 挂钩和狭窄的特定权限。\n\n默认情况下，只有组织所有者才可管理组织中 GitHub 的设置。 若要允许其他用户更改组织拥有的 GitHub 应用的开发人员设置，所有者可以向他们授予 GitHub 应用管理器权限。 GitHub 应用管理器无法管理第三方应用程序。 有关在组织中添加和删除 GitHub 应用管理器的详细信息，请参阅“[组织中的角色](/zh/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#github-app-managers)”。\n\n## 生成 GitHub App\n\n若要生成 GitHub App，首先需要注册 GitHub App。 有关详细信息，请参阅“[注册GitHub应用](/zh/apps/creating-github-apps/registering-a-github-app/registering-a-github-app)”。\n\n然后，需要编写代码以向 GitHub App 添加功能。 可以使用 GitHub App 注册中的凭据向 GitHub\n的 API 发出经过身份验证的请求。 若要详细了解如何为 GitHub App 编写代码，请参阅“[关于为GitHub应用编写代码](/zh/apps/creating-github-apps/writing-code-for-a-github-app/about-writing-code-for-a-github-app)”。 若要详细了解如何发出经过身份验证的请求，请参阅“[关于使用 GitHub 应用进行身份验证](/zh/apps/creating-github-apps/authenticating-with-a-github-app/about-authentication-with-a-github-app)”。\n\n为 GitHub App 编写代码后，需要在某个位置运行应用。 如果你的应用是网站或 Web 应用，则可以在[Azure App Service](https://azure.microsoft.com/products/app-service/)等服务器上托管应用。 如果你的应用是客户端应用，它可能会在用户的设备上运行。\n\n要使用 GitHub App，需要将其安装在 组织或个人帐户上。\n\n* 如果将 GitHub App 设为**私有**，则只能在拥有该应用的帐户上进行安装。\n* 如果 GitHub App 属于公有，则其他帐户也可以安装此应用\\*\\*\\*\\*。 只有该企业的成员才能登录此应用。\n\n有关详细信息，请参阅 [安装自己的GitHub应用](/zh/apps/using-github-apps/installing-your-own-github-app) 和 [共享 GitHub 应用](/zh/apps/sharing-github-apps/sharing-your-github-app)。\n\n## 了解要构建的 GitHub App 类型\n\n设计 GitHub App 有多种方法可供你选择，具体取决你希望应用包含的功能。\n\n### 代表用户执行操作的 GitHub Apps\n\n如果希望应用代表用户执行操作，则应使用用户访问令牌进行身份验证。 这种类型的请求有时称为“用户到服务器”，这意味着应用将受到已授予应用的权限以及用户权限的限制。 使用此模式时，用户必须先授权应用，然后应用才能执行操作。 有关详细信息，请参阅“[代表用户使用 GitHub 应用进行身份验证](/zh/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user)”。\n\n可以使用 GitHub App 创建的一些自动化示例包括，其中应用代表用户执行操作：\n\n* 使用 GitHub App 作为生态系统标识提供者的 GitHub。\n* 一个 GitHub App 在 GitHub 上添加服务，这个服务可能对 GitHub 用户有用。 可以通过 GitHub Marketplace 与其他开发人员共享应用，或者将应用设为公开。\n\n### 以应用自身身份执行操作的 GitHub Apps\n\n如果希望应用以应用自身身份而不是用户身份执行操作，则应使用安装访问令牌进行身份验证。 这种类型的请求有时称为“服务器到服务器”，这意味着应用将受到已授予应用的权限的限制。 有关详细信息，请参阅“[验证为 GitHub 应用程序安装](/zh/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation)”。\n\n可以使用 GitHub App 创建的一些自动化示例包括，其中应用以自身身份执行操作：\n\n* 使用 Webhook 响应给定一组特定条件的事件的 GitHub App。 例如，可以围绕 REST API 终结点创建自动化来[审批 fine-grained personal access token 的请求](/zh/rest/orgs/personal-access-tokens?apiVersion=2022-11-28#review-requests-to-access-organization-resources-with-fine-grained-personal-access-tokens)，在给定特定策略的情况下批准请求。\n* 帮助存储库参与者的 GitHub App。 例如，应用可以在参与者创建拉取请求或发表评论后发布有用的资源。\n* 生成生存期较短的令牌以提供给其他 CI/CD 工具或从存储库中提取信息的 GitHub App。\n\n### 响应 Webhook 的 GitHub Apps\n\n如果希望应用响应 GitHub 上的事件，则应用应订阅 Webhook。 例如，你可能希望你的应用在 pull request 打开时发表评论。 有关详细信息，请参阅“[将 Webhook 与 GitHub 应用配合使用](/zh/apps/creating-github-apps/setting-up-a-github-app/using-webhooks-with-github-apps)”。\n\n### GitHub Apps 可以执行某些操作\n\n设置 GitHub App时，可以选择该应用的特定权限。 这些权限确定应用可以通过 GitHub API 执行哪些操作、应用可以代表登录用户执行哪些操作，以及应用可以接收哪些 Webhook。 有关详细信息，请参阅“[为GitHub应用选择权限](/zh/apps/creating-github-apps/registering-a-github-app/choosing-permissions-for-a-github-app)”。"}