diff --git a/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-custom-badge-for-your-github-app.md b/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-custom-badge-for-your-github-app.md index 6c301fa0746a..eaa430f1938d 100644 --- a/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-custom-badge-for-your-github-app.md +++ b/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-custom-badge-for-your-github-app.md @@ -24,9 +24,9 @@ ms.locfileid: '145099209' ![默认肖像](/assets/images/identicon.png) -创建 GitHub 应用程序后,可以通过上传徽标和选择背景颜色自定义应用程序的徽章。 徽章是圆形徽章内的方形徽标图像。 您可以为徽章选择背景颜色,以便从视觉上与应用程序区分开。 +创建 GitHub 应用程序后,可以通过上传徽标和选择背景颜色自定义应用程序的徽章。徽章是圆形徽章内的方形徽标图像。您可以为徽章选择背景颜色,以便从视觉上与应用程序区分开。 -徽标应为 1 MB 以下的 PNG、JPG 或 GIF 文件。 为获得最佳渲染效果,建议图像大小至少为 200px x 200px。 {% ifversion fpt or ghec %}有关自定义徽章的详细指南,请参阅“[徽标和徽章图像的提示](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/#guidelines-for-logos)”。{% endif %} +徽标应为 1 MB 以下的 PNG、JPG 或 GIF 文件。为获得最佳渲染效果,建议图像大小至少为 200px x 200px。 {% ifversion fpt or ghec %}有关自定义徽章的详细指南,请参阅“[徽标和徽章图像的提示](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/#guidelines-for-logos)”。{% endif %} {% ifversion fpt or ghec %} @@ -39,7 +39,7 @@ ms.locfileid: '145099209' {% data reusables.user-settings.access_settings %} {% data reusables.user-settings.developer_settings %} {% data reusables.user-settings.github_apps %} {% data reusables.user-settings.modify_github_app %} 5. 在“显示信息”中,从本地文件夹拖放图像,或单击“上传徽标”,从计算机选择图像。 ![上传徽标](/assets/images/github-apps/github_apps_upload_logo.png) -6. 裁剪图片。 完成后,单击“设置新头像”。 +6. 裁剪图片。完成后,单击“设置新头像”。 ![裁剪和设置徽标](/assets/images/github-apps/github_apps_crop_and_set_avatar.png) 7. 在“徽章背景色”中,键入徽章背景色的[十六进制颜色代码](http://www.color-hex.com/)。 {% ifversion fpt or ghec %}注意:“徽章背景色”输入字段只会在上传应用程序徽标后显示。{% endif %} ![徽章背景色](/assets/images/github-apps/github_apps_badge_background_color.png) diff --git a/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app-from-a-manifest.md b/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app-from-a-manifest.md index dd93efa9ba7a..56ab00fb435b 100644 --- a/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app-from-a-manifest.md +++ b/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app-from-a-manifest.md @@ -1,6 +1,6 @@ --- title: 从清单创建 GitHub 应用程序 -intro: GitHub 应用程序清单是预先配置的 GitHub 应用程序,您可以与希望在其个人仓库中使用您的应用程序的任何用户分享它。 清单流程允许用户快速创建、安装和开始扩展 GitHub 应用程序,而无需注册应用程序或将注册连接到托管应用代码。 +intro: GitHub 应用程序清单是预先配置的 GitHub 应用程序,您可以与希望在其个人仓库中使用您的应用程序的任何用户分享它。清单流程允许用户快速创建、安装和开始扩展 GitHub 应用程序,而无需注册应用程序或将注册连接到托管应用代码。 redirect_from: - /apps/building-github-apps/creating-github-apps-from-a-manifest - /developers/apps/creating-a-github-app-from-a-manifest @@ -21,9 +21,9 @@ ms.locfileid: '145099208' --- ## 关于 GitHub 应用程序清单 -当有人从清单创建 GitHub 应用程序时,他们只需遵循 URL 并命名应用程序即可。 清单包括自动注册应用程序所需的权限、事件和 web 挂钩 URL。 清单流程创建 GitHub 应用程序注册并检索应用程序的 web 挂钩密钥、私钥 (PEM 文件) 和 GitHub 应用程序 ID。 从清单创建应用的人将拥有该应用,并可以选择[编辑应用的配置设置](/apps/managing-github-apps/modifying-a-github-app/)、删除它或将其转让给 GitHub 上的其他人。 +当有人从清单创建 GitHub 应用程序时,他们只需遵循 URL 并命名应用程序即可。清单包括自动注册应用程序所需的权限、事件和 web 挂钩 URL。清单流程创建 GitHub 应用程序注册并检索应用程序的 web 挂钩密钥、私钥(PEM 文件)和 GitHub 应用程序 ID。从清单创建应用的人将拥有该应用,并可以选择[编辑应用的配置设置](/apps/managing-github-apps/modifying-a-github-app/)、删除它或将其转让给 GitHub 上的其他人。 -可以使用 [Probot](https://probot.github.io/) 开始使用 GitHub 应用清单或查看示例实现。 有关详细信息,请参阅“[使用 Probot 实现 GitHub 应用清单流](#using-probot-to-implement-the-github-app-manifest-flow)”。 +可以使用 [Probot](https://probot.github.io/) 开始使用 GitHub 应用清单或查看示例实现。有关详细信息,请参阅“[使用 Probot 实现 GitHub 应用清单流](#using-probot-to-implement-the-github-app-manifest-flow)”。 以下是您可以使用 GitHub 应用程序清单来创建预配置应用程序的一些场景: @@ -35,7 +35,7 @@ ms.locfileid: '145099208' ## 实现 GitHub 应用程序清单流程 -GitHub 应用清单流使用类似于 [OAuth 流](/apps/building-oauth-apps/authorizing-oauth-apps/)的握手过程。 该流使用清单[注册 GitHub 应用](/apps/building-github-apps/creating-a-github-app/),并接收用于检索该应用的私钥、Webhook 机密和 ID 的临时 `code`。 +GitHub 应用清单流使用类似于 [OAuth 流](/apps/building-oauth-apps/authorizing-oauth-apps/)的握手过程。该流使用清单[注册 GitHub 应用](/apps/building-github-apps/creating-a-github-app/),并接收用于检索该应用的私钥、Webhook 机密和 ID 的临时 `code`。 {% note %} @@ -53,9 +53,9 @@ GitHub 应用清单流使用类似于 [OAuth 流](/apps/building-oauth-apps/auth 若要重定向人员以创建新的 GitHub 应用,请为他们[提供一个链接](#examples)以供单击,该链接针对个人帐户将 `POST` 请求发送到 `https://github.com/settings/apps/new`,或针对组织帐户将该请求发送到 `https://github.com/organizations/ORGANIZATION/settings/apps/new`,并将 `ORGANIZATION` 替换为将创建应用的组织帐户的名称。 -必须将 [GitHub 应用清单参数](#github-app-manifest-parameters)作为 JSON 编码的字符串包含在名为 `manifest` 的参数中。 还可以包含一个 `state` [参数](#parameters)以实现额外的安全性。 +必须将 [GitHub 应用清单参数](#github-app-manifest-parameters)作为 JSON 编码的字符串包含在名为 `manifest` 的参数中。还可以包含一个 `state` [参数](#parameters)以实现额外的安全性。 -创建应用的人将被重定向到带有输入字段的 GitHub 页面,他们可以在该页面编辑你包含在 `manifest` 参数中的应用的名称。 如果你未在 `manifest` 中包含 `name`,他们可以在此字段中为应用设置自己的名称。 +创建应用的人将被重定向到带有输入字段的 GitHub 页面,他们可以在该页面编辑你包含在 `manifest` 参数中的应用的名称。如果你未在 `manifest` 中包含 `name`,他们可以在此字段中为应用设置自己的名称。 ![创建 GitHub 应用程序清单](/assets/images/github-apps/create-github-app-manifest.png) @@ -67,11 +67,11 @@ GitHub 应用清单流使用类似于 [OAuth 流](/apps/building-oauth-apps/auth `url` | `string` | **必填。** GitHub 应用的主页。 `hook_attributes` | `object` | GitHub 应用程序 web 挂钩的配置 `redirect_url` | `string` | 用户从清单启动 GitHub 应用创建后要重定向到的完整 URL。 -`callback_urls` | `array of strings` | 在用户授权安装后重定向到的完整 URL。 您可以提供最多 10 个回叫 URL。 +`callback_urls` | `array of strings` | 在用户授权安装后重定向到的完整 URL。您可以提供最多 10 个回叫 URL。 `description` | `string` | GitHub 应用程序的说明。 `public` | `boolean` | 当 GitHub 应用可供公众使用时,设置为 `true`;当其仅可供应用所有者访问时,设置为 `false`。 `default_events` | `array` | GitHub 应用订阅的[事件](/webhooks/event-payloads)列表。 -`default_permissions` | `object` | GitHub 应用所需的[权限](/rest/reference/permissions-required-for-github-apps)集。 对象的格式使用键的权限名称(例如 `issues`)和值的访问类型(例如 `write`)。 +`default_permissions` | `object` | GitHub 应用所需的[权限](/rest/reference/permissions-required-for-github-apps)集。对象的格式使用键的权限名称(例如 `issues`)和值的访问类型(例如 `write`)。 `hook_attributes` 对象具有以下键: @@ -123,7 +123,7 @@ GitHub 应用清单流使用类似于 [OAuth 流](/apps/building-oauth-apps/auth ``` -此示例使用网页上的表单,其中包含一个按钮,该按钮可触发组织帐户的 `POST` 请求。 将 `ORGANIZATION` 替换为要在其中创建应用的组织帐户的名称。 +此示例使用网页上的表单,其中包含一个按钮,该按钮可触发组织帐户的 `POST` 请求。将 `ORGANIZATION` 替换为要在其中创建应用的组织帐户的名称。 ```html
@@ -160,23 +160,23 @@ GitHub 应用清单流使用类似于 [OAuth 流](/apps/building-oauth-apps/auth ### 2. GitHub 将人员重定向回你的站点 -当人员单击“创建 GitHub 应用”时,GitHub 会重定向回 `redirect_url`,其中,代码参数中包含临时 `code`。 例如: +当人员单击“创建 GitHub 应用”时,GitHub 会重定向回 `redirect_url`,其中,代码参数中包含临时 `code`。例如: https://example.com/redirect?code=a180b1a3d263c81bc6441d7b990bae27d4c10679 -如果提供了 `state` 参数,则还将在 `redirect_url` 中看到该参数。 例如: +如果提供了 `state` 参数,则还将在 `redirect_url` 中看到该参数。例如: https://example.com/redirect?code=a180b1a3d263c81bc6441d7b990bae27d4c10679&state=abc123 ### 3. 交换临时代码以检索应用配置 -若要完成握手,请将 `POST` 请求中的临时 `code` 发送到[从清单创建 GitHub 应用](/rest/reference/apps#create-a-github-app-from-a-manifest)终结点。 响应将包括 `id`(GitHub 应用 ID)、`pem`(私钥)和 `webhook_secret`。 GitHub 会自动为应用程序创建一个 web 挂钩密钥。 您可以将这些值存储在应用程序服务器上的环境变量中。 例如,如果应用使用 [dotenv](https://github.com/bkeepers/dotenv) 来存储环境变量,则你应该将这些变量存储在应用的 `.env` 文件中。 +若要完成握手,请将 `POST` 请求中的临时 `code` 发送到[从清单创建 GitHub 应用](/rest/reference/apps#create-a-github-app-from-a-manifest)终结点。响应将包括 `id`(GitHub 应用 ID)、`pem`(私钥)和 `webhook_secret`。GitHub 会自动为应用程序创建一个 web 挂钩密钥。您可以将这些值存储在应用程序服务器上的环境变量中。例如,如果应用使用 [dotenv](https://github.com/bkeepers/dotenv) 来存储环境变量,则你应该将这些变量存储在应用的 `.env` 文件中。 您必须在一小时内完成 GitHub 应用程序清单流程中的此步骤。 {% note %} -注意:此终结点具有速率限制。 请参阅[速率限制](/rest/reference/rate-limit),了解如何获取当前速率限制状态。 +注意:此终结点具有速率限制。请参阅[速率限制](/rest/reference/rate-limit),了解如何获取当前速率限制状态。 {% endnote %} @@ -184,18 +184,18 @@ GitHub 应用清单流使用类似于 [OAuth 流](/apps/building-oauth-apps/auth 有关终结点响应的详细信息,请参阅[从清单创建 GitHub 应用](/rest/reference/apps#create-a-github-app-from-a-manifest)。 -清单流程的最后一步完成后,从流程创建应用程序的人将是注册 GitHub 应用程序的所有者,他们可以将其安装到他们的任何个人仓库中。 他们可以选择使用 GitHub API 扩展应用程序、将所有权转让给其他人或者随时删除它。 +清单流程的最后一步完成后,从流程创建应用程序的人将是注册 GitHub 应用程序的所有者,他们可以将其安装到他们的任何个人仓库中。他们可以选择使用 GitHub API 扩展应用程序、将所有权转让给其他人或者随时删除它。 ## 使用 Probot 实现 GitHub 应用程序清单流程 -[Probot](https://probot.github.io/) 是一种使用 [Node.js](https://nodejs.org/) 构建的框架,可执行所有 GitHub 应用所需的很多任务,例如验证 Webhook 和执行身份验证。 Probot 实现了 [GitHub 应用清单流](#implementing-the-github-app-manifest-flow),使人们能够轻松创建 GitHub 应用参考设计并与 GitHub 社区共享。 +[Probot](https://probot.github.io/) 是一种使用 [Node.js](https://nodejs.org/) 构建的框架,可执行所有 GitHub 应用所需的很多任务,例如验证 Webhook 和执行身份验证。Probot 实现了 [GitHub 应用清单流](#implementing-the-github-app-manifest-flow),使人们能够轻松创建 GitHub 应用参考设计并与 GitHub 社区共享。 要创建可以分享的 Probot 应用程序,请遵循以下步骤: 1. [生成新的 GitHub 应用](https://probot.github.io/docs/development/#generating-a-new-app)。 -1. 打开你创建的项目,自定义 `app.yml` 文件中的设置。 Probot 使用 `app.yml` 中的设置作为 [GitHub 应用清单参数](#github-app-manifest-parameters)。 +1. 打开你创建的项目,自定义 `app.yml` 文件中的设置。Probot 使用 `app.yml` 中的设置作为 [GitHub 应用清单参数](#github-app-manifest-parameters)。 1. 添加应用程序的自定义代码。 -1. [在本地运行 GitHub 应用](https://probot.github.io/docs/development/#running-the-app-locally),或[将其托管到你想要的任何位置](#hosting-your-app-with-glitch)。 导航到托管应用的 URL 时,你会发现一个包含“注册 GitHub 应用”按钮的网页,人们可以单击该按钮创建预配置的应用。 下面的网页是 Probot 对 GitHub 应用清单流中的[步骤 1](#1-you-redirect-people-to-github-to-create-a-new-github-app) 的实现: +1. [在本地运行 GitHub 应用](https://probot.github.io/docs/development/#running-the-app-locally),或[将其托管到你想要的任何位置](#hosting-your-app-with-glitch)。导航到托管应用的 URL 时,你会发现一个包含“注册 GitHub 应用”按钮的网页,人们可以单击该按钮创建预配置的应用。下面的网页是 Probot 对 GitHub 应用清单流中的[步骤 1](#1-you-redirect-people-to-github-to-create-a-new-github-app) 的实现: ![注册 Probot GitHub 应用程序](/assets/images/github-apps/github_apps_probot-registration.png) @@ -203,4 +203,4 @@ Probot 使用 [dotenv](https://github.com/bkeepers/dotenv) 创建一个 `.env` ### 使用 Glitch 托管应用程序 -可以看到一个[示例 Probot 应用](https://glitch.com/~auspicious-aardwolf),该应用使用 [Glitch](https://glitch.com/) 来托管和共享应用。 该示例使用[检查 API](/rest/reference/checks),并选择 `app.yml` 文件中必要的检查 API 事件和权限。 Glitch 是一个允许您“重新组合自己的”应用程序的工具。 重新组合应用程序将创建一个 Glitch 托管和部署的应用程序副本。 请参阅“[关于 Glitch](https://glitch.com/about/)”,了解如何重新组合 Glitch 应用。 +可以看到一个[示例 Probot 应用](https://glitch.com/~auspicious-aardwolf),该应用使用 [Glitch](https://glitch.com/) 来托管和共享应用。该示例使用[检查 API](/rest/reference/checks),并选择 `app.yml` 文件中必要的检查 API 事件和权限。Glitch 是一个允许您“重新组合自己的”应用程序的工具。重新组合应用程序将创建一个 Glitch 托管和部署的应用程序副本。请参阅“[关于 Glitch](https://glitch.com/about/)”,了解如何重新组合 Glitch 应用。 diff --git a/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app-using-url-parameters.md b/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app-using-url-parameters.md index 413110a281f0..810cc40a6916 100644 --- a/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app-using-url-parameters.md +++ b/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app-using-url-parameters.md @@ -26,11 +26,11 @@ ms.locfileid: '147064025' * 个人帐户:`{% data variables.product.oauth_host_code %}/settings/apps/new` * 组织帐户:`{% data variables.product.oauth_host_code %}/organizations/:org/settings/apps/new` -创建应用程序的人在提交应用程序之前,可以从 {% data variables.product.prodname_github_app %} 注册页面编辑预选值。 如果你没有在 URL 查询字符串中包含必需的参数(如 `name`),则创建应用的人需要在提交该应用之前输入值。 +创建应用程序的人在提交应用程序之前,可以从 {% data variables.product.prodname_github_app %} 注册页面编辑预选值。如果你没有在 URL 查询字符串中包含必需的参数(如 `name`),则创建应用的人需要在提交该应用之前输入值。 -对于需要密钥来保护其 web 挂钩的应用,该密钥的价值必须由应用创建者以该形式设置,而不是通过使用查询参数。 有关详细信息,请参阅“[保护 Webhook](/developers/webhooks-and-events/webhooks/securing-your-webhooks)”。 +对于需要密钥来保护其 web 挂钩的应用,该密钥的价值必须由应用创建者以该形式设置,而不是通过使用查询参数。有关详细信息,请参阅“[保护 Webhook](/developers/webhooks-and-events/webhooks/securing-your-webhooks)”。 -以下 URL 使用预配置的说明和回调 URL 创建名为 `octocat-github-app` 的新公共应用。 此 URL 还选择了 `checks` 的读取和写入权限,订阅了 `check_run` 和 `check_suite` Webhook 事件,并选择了在安装过程中请求用户授权 (OAuth) 的选项: +以下 URL 使用预配置的说明和回调 URL 创建名为 `octocat-github-app` 的新公共应用。此 URL 还选择了 `checks` 的读取和写入权限,订阅了 `check_run` 和 `check_suite` Webhook 事件,并选择了在安装过程中请求用户授权 (OAuth) 的选项: ```text {% data variables.product.oauth_host_code %}/settings/apps/new?name=octocat-github-app&description=An%20Octocat%20App&callback_urls[]=https://example.com&request_oauth_on_install=true&public=true&checks=write&events[]=check_run&events[]=check_suite @@ -42,59 +42,59 @@ ms.locfileid: '147064025' 名称 | 类型 | 说明 -----|------|------------- -`name` | `string` | {% data variables.product.prodname_github_app %} 的名称。 给应用程序一个清晰简洁的名称。 应用程序不能与现有 GitHub 用户同名,除非它是您自己的用户或组织的名称。 当您的集成执行操作时,应用程序名称的缓存版本将显示在用户界面上。 +`name` | `string` | {% data variables.product.prodname_github_app %} 的名称。给应用程序一个清晰简洁的名称。应用程序不能与现有 GitHub 用户同名,除非它是您自己的用户或组织的名称。当您的集成执行操作时,应用程序名称的缓存版本将显示在用户界面上。 `description` | `string` | {% data variables.product.prodname_github_app %} 的说明。 `url` | `string` | 您的 {% data variables.product.prodname_github_app %} 网站主页的完整 URL。 -`callback_urls` | `array of strings` | 在用户授权安装后重定向到的完整 URL。 您可以提供最多 10 个回叫 URL。 如果应用程序需要识别和授权用户到服务器的请求,则使用这些 URL。 例如,`callback_urls[]=https://example.com&callback_urls[]=https://example-2.com`。 -`request_oauth_on_install` | `boolean` | 如果你的应用使用 OAuth 流授权用户,你可将此选项设置为 `true`,以允许用户在安装应用时授权它,从而省去一个步骤。 如果选择此选项,`setup_url` 将不可用,并且用户将在安装应用后被重定向到 `callback_url`。 +`callback_urls` | `array of strings` | 在用户授权安装后重定向到的完整 URL。您可以提供最多 10 个回叫 URL。如果应用程序需要识别和授权用户到服务器的请求,则使用这些 URL。例如,`callback_urls[]=https://example.com&callback_urls[]=https://example-2.com`。 +`request_oauth_on_install` | `boolean` | 如果你的应用使用 OAuth 流授权用户,你可将此选项设置为 `true`,以允许用户在安装应用时授权它,从而省去一个步骤。如果选择此选项,`setup_url` 将不可用,并且用户将在安装应用后被重定向到 `callback_url`。 `setup_url` | `string` | 在用户安装 {% data variables.product.prodname_github_app %} 后重定向到的完整 URL(如果应用程序在安装之后需要额外设置)。 `setup_on_update` | `boolean` | 设置为 `true` 可在更新安装后(例如在添加或删除存储库之后)将用户重定向到设置 URL。 `public` | `boolean` | 当 {% data variables.product.prodname_github_app %} 可供公众使用时,设置为 `true`;当它仅供应用的所有者访问时,设置为 `false`。 -`webhook_active` | `boolean` | 设置为 `false` 以禁用 Webhook。 Web 挂钩默认启用。 +`webhook_active` | `boolean` | 设置为 `false` 以禁用 Webhook。Web 挂钩默认启用。 `webhook_url` | `string` | 要向其发送 web 挂钩事件有效负载的完整 URL。 -{% ifversion ghae %}`webhook_secret` | `string` | 您可以指定一个密钥来保护 web 挂钩。 有关更多详细信息,请参阅“[保护 Webhook](/webhooks/securing/)”。 -{% endif %}`events` | `array of strings` | Webhook 事件。 某些 Webhook 事件需要你对资源有 `read` 或 `write` 权限,才能在注册新 {% data variables.product.prodname_github_app %} 时选择事件。 有关可用事件及其所需权限,请参阅“[{% data variables.product.prodname_github_app %} Webhook 事件](#github-app-webhook-events)”一节。 您可以在查询字符串中选择多个事件。 例如 `events[]=public&events[]=label`。{% ifversion ghes < 3.4 %} +{% ifversion ghae %}`webhook_secret` | `string` | 您可以指定一个密钥来保护 web 挂钩。有关更多详细信息,请参阅“[保护 Webhook](/webhooks/securing/)”。 +{% endif %}`events` | `array of strings` | Webhook 事件。某些 Webhook 事件需要你对资源有 `read` 或 `write` 权限,才能在注册新 {% data variables.product.prodname_github_app %} 时选择事件。有关可用事件及其所需权限,请参阅“[{% data variables.product.prodname_github_app %} Webhook 事件](#github-app-webhook-events)”一节。您可以在查询字符串中选择多个事件。例如 `events[]=public&events[]=label`。{% ifversion ghes < 3.4 %} `domain` | `string` | 内容引用的 URL。{% endif %} -`single_file_name` | `string` | 这是一种范围狭窄的权限,允许应用程序访问任何仓库中的单个文件。 将 `single_file` 权限设置为 `read` 或 `write` 时,此字段提供 {% data variables.product.prodname_github_app %} 将要管理的单个文件的路径。 {% ifversion fpt or ghes or ghec %} 如果需要管理多个文件,请参阅下面的 `single_file_paths`。 {% endif %}{% ifversion fpt or ghes or ghec %} -`single_file_paths` | `array of strings` | 这允许应用程序访问仓库中的最多 10 个指定文件。 将 `single_file` 权限设置为 `read` 或 `write` 时,此数组可存储 {% data variables.product.prodname_github_app %} 将要管理的最多 10 个文件的路径。 这些文件都接收由 `single_file` 设置的相同权限,没有单独的权限。 配置了两个或更多文件时,API 将返回 `multiple_single_files=true`,否则它将返回 `multiple_single_files=false`。{% endif %} +`single_file_name` | `string` | 这是一种范围狭窄的权限,允许应用程序访问任何仓库中的单个文件。将 `single_file` 权限设置为 `read` 或 `write` 时,此字段提供 {% data variables.product.prodname_github_app %} 将要管理的单个文件的路径。 {% ifversion fpt or ghes or ghec %} 如果需要管理多个文件,请参阅下面的 `single_file_paths`。 {% endif %}{% ifversion fpt or ghes or ghec %} +`single_file_paths` | `array of strings` | 这允许应用程序访问仓库中的最多 10 个指定文件。将 `single_file` 权限设置为 `read` 或 `write` 时,此数组可存储 {% data variables.product.prodname_github_app %} 将要管理的最多 10 个文件的路径。这些文件都接收由 `single_file` 设置的相同权限,没有单独的权限。配置了两个或更多文件时,API 将返回 `multiple_single_files=true`,否则它将返回 `multiple_single_files=false`。{% endif %} ## {% data variables.product.prodname_github_app %} 权限 -您可以在查询字符串中选择权限:使用下表中的权限名称作为查询参数名称,使用权限类型作为查询值。 例如,要在用户界面中为 `contents` 选择 `Read & write` 权限,你的查询字符串将包括 `&contents=write`。 要在用户界面中为 `blocking` 选择 `Read-only` 权限,你的查询字符串将包括 `&blocking=read`。 要在用户界面中为 `checks` 选择 `no-access`,你的查询字符串将不包括 `checks` 权限。 +您可以在查询字符串中选择权限:使用下表中的权限名称作为查询参数名称,使用权限类型作为查询值。例如,要在用户界面中为 `contents` 选择 `Read & write` 权限,你的查询字符串将包括 `&contents=write`。要在用户界面中为 `blocking` 选择 `Read-only` 权限,你的查询字符串将包括 `&blocking=read`。要在用户界面中为 `checks` 选择 `no-access`,你的查询字符串将不包括 `checks` 权限。 权限 | 说明 ---------- | ----------- -[`administration`](/rest/reference/permissions-required-for-github-apps/#permission-on-administration) | 对用于组织和仓库管理的各种端点授予访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% ifversion fpt or ghec %} -[`blocking`](/rest/reference/permissions-required-for-github-apps/#permission-on-blocking) | 授予对[阻止用户 API](/rest/reference/users#blocking) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} -[`checks`](/rest/reference/permissions-required-for-github-apps/#permission-on-checks) | 授予对[检查 API](/rest/reference/checks) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% ifversion ghes < 3.4 %} -`content_references` | 授予对“[创建内容附件](/rest/reference/apps#create-a-content-attachment)”终结点的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} -[`contents`](/rest/reference/permissions-required-for-github-apps/#permission-on-contents) | 对用于修改仓库内容的各种端点授予访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`deployments`](/rest/reference/permissions-required-for-github-apps/#permission-on-deployments) | 授予对[部署 API](/rest/reference/repos#deployments) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% ifversion fpt or ghes or ghec %} -[`emails`](/rest/reference/permissions-required-for-github-apps/#permission-on-emails) | 授予对[电子邮件 API](/rest/reference/users#emails) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} -[`followers`](/rest/reference/permissions-required-for-github-apps/#permission-on-followers) | 授予对[关注者 API](/rest/reference/users#followers) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`gpg_keys`](/rest/reference/permissions-required-for-github-apps/#permission-on-gpg-keys) | 授予对 [GPG 密钥 API](/rest/reference/users#gpg-keys) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`issues`](/rest/reference/permissions-required-for-github-apps/#permission-on-issues) | 授予对[问题 API](/rest/reference/issues) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`keys`](/rest/reference/permissions-required-for-github-apps/#permission-on-keys) | 授予对[公钥 API](/rest/reference/users#keys) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`members`](/rest/reference/permissions-required-for-github-apps/#permission-on-members) | 授予管理组织成员的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% ifversion fpt or ghec %} -[`metadata`](/rest/reference/permissions-required-for-github-apps/#metadata-permissions) | 授予对不泄漏敏感数据的只读端点的访问权限。 可以是 `read` 或 `none`。 设置任何权限时,默认值为 `read`;没有为 {% data variables.product.prodname_github_app %} 指定任何权限时,默认值为 `none`。 -[`organization_administration`](/rest/reference/permissions-required-for-github-apps/#permission-on-organization-administration) | 授予对“[更新组织](/rest/reference/orgs#update-an-organization)”终结点和“[组织交互限制 API](/rest/reference/interactions#set-interaction-restrictions-for-an-organization)”的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} -[`organization_hooks`](/rest/reference/permissions-required-for-github-apps/#permission-on-organization-hooks) | 授予对[组织 Webhook API](/rest/reference/orgs#webhooks/) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -`organization_plan` | 授予使用“[获取组织](/rest/reference/orgs#get-an-organization)”终结点获取有关组织计划的信息的权限。 可以是以下选项之一:`none` 或 `read`。 -[`organization_projects`](/rest/reference/permissions-required-for-github-apps/#permission-on-organization-projects) | 授予对[项目 API](/rest/reference/projects) 的访问权限。 可以是以下选项之一:`none`、`read`、`write` 或 `admin`。{% ifversion fpt or ghec %} -[`organization_user_blocking`](/rest/reference/permissions-required-for-github-apps/#permission-on-organization-projects) | 授予对[阻止组织用户 API](/rest/reference/orgs#blocking) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} -[`pages`](/rest/reference/permissions-required-for-github-apps/#permission-on-pages) | 授予对[页面 API](/rest/reference/repos#pages) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -`plan` | 授予使用“[获取用户](/rest/reference/users#get-a-user)”终结点获取有关用户的 GitHub 计划的信息的权限。 可以是以下选项之一:`none` 或 `read`。 -[`pull_requests`](/rest/reference/permissions-required-for-github-apps/#permission-on-pull-requests) | 授予对各种拉取请求端点的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`repository_hooks`](/rest/reference/permissions-required-for-github-apps/#permission-on-repository-hooks) | 授予对[存储库 Webhook API](/rest/reference/repos#hooks) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`repository_projects`](/rest/reference/permissions-required-for-github-apps/#permission-on-repository-projects) | 授予对[项目 API](/rest/reference/projects) 的访问权限。 可以是以下选项之一:`none`、`read`、`write` 或 `admin`。{% ifversion ghes or ghec %} -[`secret_scanning_alerts`](/rest/reference/permissions-required-for-github-apps/#permission-on-secret-scanning-alerts) | 授予对[机密扫描 API](/rest/reference/secret-scanning) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% endif %}{% ifversion fpt or ghes or ghec %} -[`security_events`](/rest/reference/permissions-required-for-github-apps/#permission-on-security-events) | 授予对[代码扫描 API](/rest/reference/code-scanning/) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} -[`single_file`](/rest/reference/permissions-required-for-github-apps/#permission-on-single-file) | 授予对[内容 API](/rest/reference/repos#contents) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`starring`](/rest/reference/permissions-required-for-github-apps/#permission-on-starring) | 授予对[标星 API](/rest/reference/activity#starring) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`statuses`](/rest/reference/permissions-required-for-github-apps/#permission-on-statuses) | 授予对[状态 API](/rest/reference/commits#commit-statuses) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -[`team_discussions`](/rest/reference/permissions-required-for-github-apps/#permission-on-team-discussions) | 授予对[团队讨论 API](/rest/reference/teams#discussions) 和[团队讨论评论 API](/rest/reference/teams#discussion-comments) 的访问权限。 可以是以下选项之一:`none`、`read` 或 `write`。 -`vulnerability_alerts`| 授予访问权限以接收存储库中的 {% data variables.product.prodname_dependabot_alerts %}。 有关详细信息,请参阅“[关于 {% data variables.product.prodname_dependabot_alerts %}](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)”。 可以是以下选项之一:`none` 或 `read`。 -`watching` | 授予列出和更改用户订阅的仓库的权限。 可以是以下选项之一:`none`、`read` 或 `write`。 +[`administration`](/rest/reference/permissions-required-for-github-apps/#permission-on-administration) | 对用于组织和仓库管理的各种端点授予访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% ifversion fpt or ghec %} +[`blocking`](/rest/reference/permissions-required-for-github-apps/#permission-on-blocking) | 授予对[阻止用户 API](/rest/reference/users#blocking) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} +[`checks`](/rest/reference/permissions-required-for-github-apps/#permission-on-checks) | 授予对[检查 API](/rest/reference/checks) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% ifversion ghes < 3.4 %} +`content_references` | 授予对“[创建内容附件](/rest/reference/apps#create-a-content-attachment)”终结点的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} +[`contents`](/rest/reference/permissions-required-for-github-apps/#permission-on-contents) | 对用于修改仓库内容的各种端点授予访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`deployments`](/rest/reference/permissions-required-for-github-apps/#permission-on-deployments) | 授予对[部署 API](/rest/reference/repos#deployments) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% ifversion fpt or ghes or ghec %} +[`emails`](/rest/reference/permissions-required-for-github-apps/#permission-on-emails) | 授予对[电子邮件 API](/rest/reference/users#emails) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} +[`followers`](/rest/reference/permissions-required-for-github-apps/#permission-on-followers) | 授予对[关注者 API](/rest/reference/users#followers) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`gpg_keys`](/rest/reference/permissions-required-for-github-apps/#permission-on-gpg-keys) | 授予对 [GPG 密钥 API](/rest/reference/users#gpg-keys) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`issues`](/rest/reference/permissions-required-for-github-apps/#permission-on-issues) | 授予对[问题 API](/rest/reference/issues) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`keys`](/rest/reference/permissions-required-for-github-apps/#permission-on-keys) | 授予对[公钥 API](/rest/reference/users#keys) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`members`](/rest/reference/permissions-required-for-github-apps/#permission-on-members) | 授予管理组织成员的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% ifversion fpt or ghec %} +[`metadata`](/rest/reference/permissions-required-for-github-apps/#metadata-permissions) | 授予对不泄漏敏感数据的只读端点的访问权限。可以是 `read` 或 `none`。设置任何权限时,默认值为 `read`;没有为 {% data variables.product.prodname_github_app %} 指定任何权限时,默认值为 `none`。 +[`organization_administration`](/rest/reference/permissions-required-for-github-apps/#permission-on-organization-administration) | 授予对“[更新组织](/rest/reference/orgs#update-an-organization)”终结点和“[组织交互限制 API](/rest/reference/interactions#set-interaction-restrictions-for-an-organization)”的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} +[`organization_hooks`](/rest/reference/permissions-required-for-github-apps/#permission-on-organization-hooks) | 授予对[组织 Webhook API](/rest/reference/orgs#webhooks/) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +`organization_plan` | 授予使用“[获取组织](/rest/reference/orgs#get-an-organization)”终结点获取有关组织计划的信息的权限。可以是以下选项之一:`none` 或 `read`。 +[`organization_projects`](/rest/reference/permissions-required-for-github-apps/#permission-on-organization-projects) | 授予对[项目 API](/rest/reference/projects) 的访问权限。可以是以下选项之一:`none`、`read`、`write` 或 `admin`。{% ifversion fpt or ghec %} +[`organization_user_blocking`](/rest/reference/permissions-required-for-github-apps/#permission-on-organization-projects) | 授予对[阻止组织用户 API](/rest/reference/orgs#blocking) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} +[`pages`](/rest/reference/permissions-required-for-github-apps/#permission-on-pages) | 授予对[页面 API](/rest/reference/repos#pages) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +`plan` | 授予使用“[获取用户](/rest/reference/users#get-a-user)”终结点获取有关用户的 GitHub 计划的信息的权限。可以是以下选项之一:`none` 或 `read`。 +[`pull_requests`](/rest/reference/permissions-required-for-github-apps/#permission-on-pull-requests) | 授予对各种拉取请求端点的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`repository_hooks`](/rest/reference/permissions-required-for-github-apps/#permission-on-repository-hooks) | 授予对[存储库 Webhook API](/rest/reference/repos#hooks) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`repository_projects`](/rest/reference/permissions-required-for-github-apps/#permission-on-repository-projects) | 授予对[项目 API](/rest/reference/projects) 的访问权限。可以是以下选项之一:`none`、`read`、`write` 或 `admin`。{% ifversion ghes or ghec %} +[`secret_scanning_alerts`](/rest/reference/permissions-required-for-github-apps/#permission-on-secret-scanning-alerts) | 授予对[机密扫描 API](/rest/reference/secret-scanning) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% endif %}{% ifversion fpt or ghes or ghec %} +[`security_events`](/rest/reference/permissions-required-for-github-apps/#permission-on-security-events) | 授予对[代码扫描 API](/rest/reference/code-scanning/) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。{% endif %} +[`single_file`](/rest/reference/permissions-required-for-github-apps/#permission-on-single-file) | 授予对[内容 API](/rest/reference/repos#contents) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`starring`](/rest/reference/permissions-required-for-github-apps/#permission-on-starring) | 授予对[标星 API](/rest/reference/activity#starring) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`statuses`](/rest/reference/permissions-required-for-github-apps/#permission-on-statuses) | 授予对[状态 API](/rest/reference/commits#commit-statuses) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +[`team_discussions`](/rest/reference/permissions-required-for-github-apps/#permission-on-team-discussions) | 授予对[团队讨论 API](/rest/reference/teams#discussions) 和[团队讨论评论 API](/rest/reference/teams#discussion-comments) 的访问权限。可以是以下选项之一:`none`、`read` 或 `write`。 +`vulnerability_alerts`| 授予访问权限以接收存储库中的 {% data variables.product.prodname_dependabot_alerts %}。有关详细信息,请参阅“[关于 {% data variables.product.prodname_dependabot_alerts %}](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)”。可以是以下选项之一:`none` 或 `read`。 +`watching` | 授予列出和更改用户订阅的仓库的权限。可以是以下选项之一:`none`、`read` 或 `write`。 ## {% data variables.product.prodname_github_app %} web 挂钩事件 diff --git a/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app.md b/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app.md index dac831ef672f..3c146d3bdd2b 100644 --- a/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app.md +++ b/translations/zh-CN/content/developers/apps/building-github-apps/creating-a-github-app.md @@ -34,37 +34,37 @@ ms.locfileid: '146179085' 1. 在“GitHub App name(GitHub 应用程序名称)”中,输入应用程序的名称。 ![GitHub 应用的名称字段](/assets/images/github-apps/github_apps_app_name.png) - 给应用程序一个清晰简洁的名称。 应用程序不能与现有 GitHub 帐户同名,除非它是您自己的用户或组织的名称。 当您的集成执行操作时,应用程序名称的缓存版本将显示在用户界面上。 + 给应用程序一个清晰简洁的名称。应用程序不能与现有 GitHub 帐户同名,除非它是您自己的用户或组织的名称。当您的集成执行操作时,应用程序名称的缓存版本将显示在用户界面上。 1. (可选)在“Description(说明)”中,输入用户将看到的应用程序说明。 ![GitHub 应用的说明字段](/assets/images/github-apps/github_apps_description.png) 1. 在“Homepage URL(主页 URL)”中,输入应用程序网站的完整 URL。 ![GitHub 应用的主页 URL 字段](/assets/images/github-apps/github_apps_homepage_url.png) {% ifversion fpt or ghes or ghec %} -1. 在“Callback URL(回调 URL)”中,键入用户授权安装后要重定向到的完整 URL。 如果应用程序需要识别和授权用户到服务器的请求,则使用此 URL。 +1. 在“Callback URL(回调 URL)”中,键入用户授权安装后要重定向到的完整 URL。如果应用程序需要识别和授权用户到服务器的请求,则使用此 URL。 可以使用“添加回调 URL”来提供额外的回调 URL,最多不超过 10 个。 ![“添加回调 URL”按钮和用于回调 URL 的字段](/assets/images/github-apps/github_apps_callback_url_multiple.png) {% else %} -1. 在“User authorization callback URL(用户授权回调 URL)”中,键入用户授权安装后要重定向到的完整 URL。 如果应用程序需要识别和授权用户到服务器的请求,则使用此 URL。 +1. 在“User authorization callback URL(用户授权回调 URL)”中,键入用户授权安装后要重定向到的完整 URL。如果应用程序需要识别和授权用户到服务器的请求,则使用此 URL。 ![GitHub 应用的用户授权回调 URL 字段](/assets/images/github-apps/github_apps_user_authorization.png) {% endif %} -1. 默认情况下,为了提高应用程序的安全性,应用程序将使用过期用户授权令牌。 要选择不使用过期用户令牌,您必须取消选中“Expire user authorization tokens(过期用户授权令牌)”。 若要详细了解如何设置刷新令牌流以及用户令牌过期的好处,请参阅“[刷新用户到服务器访问令牌](/apps/building-github-apps/refreshing-user-to-server-access-tokens/)”。 +1. 默认情况下,为了提高应用程序的安全性,应用程序将使用过期用户授权令牌。要选择不使用过期用户令牌,您必须取消选中“Expire user authorization tokens(过期用户授权令牌)”。若要详细了解如何设置刷新令牌流以及用户令牌过期的好处,请参阅“[刷新用户到服务器访问令牌](/apps/building-github-apps/refreshing-user-to-server-access-tokens/)”。 ![在 GitHub 应用安装过程中选择加入过期用户令牌的选项](/assets/images/github-apps/expire-user-tokens-selection.png) -1. 如果应用授权用户使用 OAuth 流,则你可以选择“在安装过程中请求用户授权(OAuth)”,以允许用户在安装应用时对其进行授权,从而省去一个步骤。 如果您选择此选项,则“设置 URL”将不可用,用户在安装应用程序后将被重定向到您的“用户授权回调 URL”。 有关详细信息,请参阅“[在安装期间授权用户](/apps/installing-github-apps/#authorizing-users-during-installation)”。 +1. 如果应用授权用户使用 OAuth 流,则你可以选择“在安装过程中请求用户授权 (OAuth)”,以允许用户在安装应用时对其进行授权,从而省去一个步骤。如果您选择此选项,则“设置 URL”将不可用,用户在安装应用程序后将被重定向到您的“用户授权回调 URL”。有关详细信息,请参阅“[在安装期间授权用户](/apps/installing-github-apps/#authorizing-users-during-installation)”。 ![在安装过程中请求用户授权](/assets/images/github-apps/github_apps_request_auth_upon_install.png){% ifversion device-flow-is-opt-in %} -1. 如果 GitHub 应用使用设备流来标识和授权用户,请单击“启用设备流”。 有关设备流的详细信息,请参阅“[授权 OAuth 应用](/developers/apps/building-oauth-apps/authorizing-oauth-apps#device-flow)”。 +1. 如果 GitHub 应用使用设备流来标识和授权用户,请单击“启用设备流”。有关设备流的详细信息,请参阅“[授权 OAuth 应用](/developers/apps/building-oauth-apps/authorizing-oauth-apps#device-flow)”。 ![显示启用设备流的字段的屏幕截图](/assets/images/oauth-apps/enable-device-flow.png){% endif %} 1. 如果安装后需要附加设置,请添加一个“设置 URL”以便在用户安装应用程序后重定向他们。 ![GitHub 应用的安装 URL 字段](/assets/images/github-apps/github_apps_setup_url.png) {% note %} - 注意:如果在上一步选择了“在安装过程中请求用户授权(OAuth)”,此字段将不可用,用户在安装应用后将被重定向到“用户授权回调 URL” 。 + 注意:如果在上一步选择了“在安装过程中请求用户授权 (OAuth)”,此字段将不可用,用户在安装应用后将被重定向到“用户授权回调 URL” 。 {% endnote %} -1. 在“Webhook URL(Web 挂钩 URL)”中,输入事件将 POST 到的 URL。 每个应用程序都会收到自己的 web 挂钩(每当应用程序被安装或修改时都会通知您)以及应用程序订阅的任何其他事件。 +1. 在“Webhook URL(Web 挂钩 URL)”中,输入事件将 POST 到的 URL。每个应用程序都会收到自己的 web 挂钩(每当应用程序被安装或修改时都会通知您)以及应用程序订阅的任何其他事件。 ![GitHub 应用的 Webhook URL 字段](/assets/images/github-apps/github_apps_webhook_url.png) 1. (可选)在“Webhook Secret(Web 挂钩密钥)”中,输入用于保护 web 挂钩的可选密钥令牌。 @@ -72,14 +72,14 @@ ms.locfileid: '146179085' {% note %} - 注意:强烈建议设置机密令牌。 有关详细信息,请参阅“[保护 Webhook](/webhooks/securing/)”。 + 注意:强烈建议设置机密令牌。有关详细信息,请参阅“[保护 Webhook](/webhooks/securing/)”。 {% endnote %} -1. 在“Permissions(权限)”中,选择应用程序将请求的权限。 对于每种权限类型,请使用下拉菜单,然后单击“只读”、“读写”或“无访问权限” 。 +1. 在“Permissions(权限)”中,选择应用程序将请求的权限。对于每种权限类型,请使用下拉菜单,然后单击“只读”、“读写”或“无访问权限” 。 ![GitHub 应用的各种权限](/assets/images/github-apps/github_apps_new_permissions_post2dot13.png) 1. 在“Subscribe to events(订阅事件)”中,选择您想要应用程序接收的事件。 -1. 若要选择应用的安装位置,请选择“仅在此帐户上”或“任何帐户” 。 有关安装选项的详细信息,请参阅“[将 GitHub 应用设为公开或专用](/apps/managing-github-apps/making-a-github-app-public-or-private/)”。 +1. 若要选择应用的安装位置,请选择“仅在此帐户上”或“任何帐户” 。有关安装选项的详细信息,请参阅“[将 GitHub 应用设为公开或专用](/apps/managing-github-apps/making-a-github-app-public-or-private/)”。 ![GitHub 应用的安装选项](/assets/images/github-apps/github_apps_installation_options.png) 1. 单击“创建 GitHub 应用”。 ![创建 GitHub 应用的按钮](/assets/images/github-apps/github_apps_create_github_app.png) diff --git a/translations/zh-CN/content/developers/apps/building-github-apps/index.md b/translations/zh-CN/content/developers/apps/building-github-apps/index.md index ddfe954c62eb..77f0f5c88fea 100644 --- a/translations/zh-CN/content/developers/apps/building-github-apps/index.md +++ b/translations/zh-CN/content/developers/apps/building-github-apps/index.md @@ -1,6 +1,6 @@ --- title: 构建 GitHub 应用程序 -intro: 您可以构建您自己或其他人使用的 GitHub 应用程序。 了解如何注册和设置 GitHub 应用程序的权限及身份验证选项。 +intro: 您可以构建您自己或其他人使用的 GitHub 应用程序。了解如何注册和设置 GitHub 应用程序的权限及身份验证选项。 redirect_from: - /apps/building-integrations/setting-up-and-registering-github-apps - /apps/building-github-apps diff --git a/translations/zh-CN/content/developers/apps/building-github-apps/rate-limits-for-github-apps.md b/translations/zh-CN/content/developers/apps/building-github-apps/rate-limits-for-github-apps.md index cf3b460a7aae..746bf536c8cc 100644 --- a/translations/zh-CN/content/developers/apps/building-github-apps/rate-limits-for-github-apps.md +++ b/translations/zh-CN/content/developers/apps/building-github-apps/rate-limits-for-github-apps.md @@ -30,7 +30,7 @@ ms.locfileid: '147081126' ## 关于应用程序的速率限制 -{% data variables.product.prodname_github_apps %} 和 {% data variables.product.prodname_oauth_apps %} 的速率限制取决于安装应用程序的组织的计划。 有关详细信息,请参阅“[{% data variables.product.company_short %} 的产品](/get-started/learning-about-github/githubs-products)”和“[{% data variables.product.company_short %} 帐户的类型](/get-started/learning-about-github/types-of-github-accounts#organization-accounts)”。 +{% data variables.product.prodname_github_apps %} 和 {% data variables.product.prodname_oauth_apps %} 的速率限制取决于安装应用程序的组织的计划。有关详细信息,请参阅“[{% data variables.product.company_short %} 的产品](/get-started/learning-about-github/githubs-products)”和“[{% data variables.product.company_short %} 帐户的类型](/get-started/learning-about-github/types-of-github-accounts#organization-accounts)”。 {% endif %} @@ -42,7 +42,7 @@ ms.locfileid: '147081126' {% endif %} -发出服务器-服务器请求的 {% data variables.product.prodname_github_apps %} 使用安装的最低速率限制为每小时 5,000 个请求。 如果应用程序安装在具有 20 个以上用户的组织中,则该应用程序每小时为每个用户再接收 50 个请求。 具有 20 个以上仓库的安装每小时会为每个仓库再接收 50 个请求。 安装的最大速率限制为每小时 12,500 个请求。 +发出服务器-服务器请求的 {% data variables.product.prodname_github_apps %} 使用安装的最低速率限制为每小时 5,000 个请求。如果应用程序安装在具有 20 个以上用户的组织中,则该应用程序每小时为每个用户再接收 50 个请求。具有 20 个以上仓库的安装每小时会为每个仓库再接收 50 个请求。安装的最大速率限制为每小时 12,500 个请求。 {% ifversion fpt or ghec %} @@ -58,9 +58,9 @@ ms.locfileid: '147081126' ## 用户到服务器请求 -{% data variables.product.prodname_github_apps %} 和 {% data variables.product.prodname_oauth_apps %} 还可以代表用户执行操作,在用户授权应用后发出用户到服务器的请求。 有关详细信息,请参阅“[授权 {% data variables.product.prodname_github_apps %}](/authentication/keeping-your-account-and-data-secure/authorizing-github-apps)”和“[授权 {% data variables.product.prodname_oauth_apps %}](/authentication/keeping-your-account-and-data-secure/authorizing-oauth-apps)”。 +{% data variables.product.prodname_github_apps %} 和 {% data variables.product.prodname_oauth_apps %} 还可以代表用户执行操作,在用户授权应用后发出用户到服务器的请求。有关详细信息,请参阅“[授权 {% data variables.product.prodname_github_apps %}](/authentication/keeping-your-account-and-data-secure/authorizing-github-apps)”和“[授权 {% data variables.product.prodname_oauth_apps %}](/authentication/keeping-your-account-and-data-secure/authorizing-oauth-apps)”。 -来自 {% data variables.product.prodname_oauth_apps %} 的用户到服务器请求使用 OAuth 令牌进行身份验证。 来自 {% data variables.product.prodname_github_apps %} 的用户到服务器请求使用 OAuth 令牌或即将过期的用户访问令牌进行身份验证。 有关详细信息,请参阅“[为 {% data variables.product.prodname_github_apps %} 识别和授权用户](/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#identifying-and-authorizing-users-for-github-apps)”和“[授权 {% data variables.product.prodname_oauth_apps %}](/developers/apps/building-oauth-apps/authorizing-oauth-apps)”。 +来自 {% data variables.product.prodname_oauth_apps %} 的用户到服务器请求使用 OAuth 令牌进行身份验证。来自 {% data variables.product.prodname_github_apps %} 的用户到服务器请求使用 OAuth 令牌或即将过期的用户访问令牌进行身份验证。有关详细信息,请参阅“[为 {% data variables.product.prodname_github_apps %} 识别和授权用户](/developers/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#identifying-and-authorizing-users-for-github-apps)”和“[授权 {% data variables.product.prodname_oauth_apps %}](/developers/apps/building-oauth-apps/authorizing-oauth-apps)”。 {% ifversion fpt or ghec %} @@ -70,7 +70,7 @@ ms.locfileid: '147081126' {% ifversion ghec %} -{% data variables.product.prodname_github_apps %} 发出的用户到服务器请求的速率限制取决于应用程序的安装位置。 如果应用程序安装在 {% data variables.product.product_location %} 上由企业拥有的组织或存储库上,则速率高于企业外部的安装。 +{% data variables.product.prodname_github_apps %} 发出的用户到服务器请求的速率限制取决于应用程序的安装位置。如果应用程序安装在 {% data variables.product.product_location %} 上由企业拥有的组织或存储库上,则速率高于企业外部的安装。 {% endif %} diff --git a/translations/zh-CN/content/developers/apps/building-github-apps/refreshing-user-to-server-access-tokens.md b/translations/zh-CN/content/developers/apps/building-github-apps/refreshing-user-to-server-access-tokens.md index 29ab919314b8..c8d0ae7131cb 100644 --- a/translations/zh-CN/content/developers/apps/building-github-apps/refreshing-user-to-server-access-tokens.md +++ b/translations/zh-CN/content/developers/apps/building-github-apps/refreshing-user-to-server-access-tokens.md @@ -23,9 +23,9 @@ ms.locfileid: '147064408' ## 关于过期用户访问令牌 -要实施定期令牌轮换并减少受威胁令牌的影响,您可以配置 {% data variables.product.prodname_github_app %} 以使用过期用户访问令牌。 有关发出用户到服务器请求的详细信息,请参阅“[识别和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 +要实施定期令牌轮换并减少受威胁令牌的影响,您可以配置 {% data variables.product.prodname_github_app %} 以使用过期用户访问令牌。有关发出用户到服务器请求的详细信息,请参阅“[识别和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 -过期用户令牌在 8 小时后过期。 当您收到新的用户到服务器访问令牌时,响应还将包含刷新令牌,可以将其交换为新的用户令牌和刷新令牌。 刷新令牌的有效期为 6 个月。 +过期用户令牌在 8 小时后过期。当您收到新的用户到服务器访问令牌时,响应还将包含刷新令牌,可以将其交换为新的用户令牌和刷新令牌。刷新令牌的有效期为 6 个月。 ## 使用刷新令牌续订用户令牌 @@ -33,7 +33,7 @@ ms.locfileid: '147064408' `POST https://github.com/login/oauth/access_token` -此回调请求将向您发送新的访问令牌和新的刷新令牌。 此回调请求类似于用来将临时 `code` 交换为访问令牌的 OAuth 请求。 有关详细信息,请参阅“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#2-users-are-redirected-back-to-your-site-by-github)”和“[身份验证基础知识](/rest/guides/basics-of-authentication#providing-a-callback)”。 +此回调请求将向您发送新的访问令牌和新的刷新令牌。此回调请求类似于用来将临时 `code` 交换为访问令牌的 OAuth 请求。有关详细信息,请参阅“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#2-users-are-redirected-back-to-your-site-by-github)”和“[身份验证基础知识](/rest/guides/basics-of-authentication#providing-a-callback)”。 ### 参数 @@ -65,7 +65,7 @@ ms.locfileid: '147064408' ![编辑 GitHub 应用的设置](/assets/images/github-apps/edit-test-app.png) 5. 在左侧边栏中,单击“可选功能”。 ![“可选功能”选项卡](/assets/images/github-apps/optional-features-option.png) -6. 在“用户到服务器令牌过期”旁边,单击“选择加入”或“选择退出”。此设置可能需要几秒钟才能应用 。 +6. 在“用户到服务器令牌过期”旁边,单击“选择加入”或“选择退出”。此设置可能需要几秒钟才能应用。 ## 为新的 GitHub 应用程序选择退出过期令牌 @@ -77,7 +77,7 @@ ms.locfileid: '147064408' 仅当应用程序所有者为其应用程序启用了过期用户令牌时,使用用户到服务器授权令牌的现有 {% data variables.product.prodname_github_apps %} 才会受到这个新流程的影响。 -要为现有 {% data variables.product.prodname_github_apps %} 启用过期用户令牌,需要通过 OAuth 流程发送用户以重新颁发将在 8 小时后过期的新用户令牌,并使用刷新令牌发出请求以获取新的访问令牌和刷新令牌。 有关详细信息,请参阅“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 +要为现有 {% data variables.product.prodname_github_apps %} 启用过期用户令牌,需要通过 OAuth 流程发送用户以重新颁发将在 8 小时后过期的新用户令牌,并使用刷新令牌发出请求以获取新的访问令牌和刷新令牌。有关详细信息,请参阅“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 ## 延伸阅读 diff --git a/translations/zh-CN/content/developers/apps/building-github-apps/setting-permissions-for-github-apps.md b/translations/zh-CN/content/developers/apps/building-github-apps/setting-permissions-for-github-apps.md index 2efaa1b697bc..7969ed14d651 100644 --- a/translations/zh-CN/content/developers/apps/building-github-apps/setting-permissions-for-github-apps.md +++ b/translations/zh-CN/content/developers/apps/building-github-apps/setting-permissions-for-github-apps.md @@ -21,4 +21,4 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/10/2022 ms.locfileid: '145085053' --- -GitHub 应用程序默认没有任何权限。 创建 GitHub 应用程序时,您可以选择访问最终用户数据所需的权限。 还可以添加和删除权限。 有关详细信息,请参阅“[编辑 GitHub 应用的权限](/apps/managing-github-apps/editing-a-github-app-s-permissions/)”。 +GitHub 应用程序默认没有任何权限。创建 GitHub 应用程序时,您可以选择访问最终用户数据所需的权限。还可以添加和删除权限。有关详细信息,请参阅“[编辑 GitHub 应用的权限](/apps/managing-github-apps/editing-a-github-app-s-permissions/)”。 diff --git a/translations/zh-CN/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md b/translations/zh-CN/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md index 18e234e87b95..954063d844f6 100644 --- a/translations/zh-CN/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md +++ b/translations/zh-CN/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md @@ -36,7 +36,7 @@ ms.locfileid: '147717787' {% note %} -注意:如果要生成 GitHub 应用,仍可以使用 OAuth Web 应用程序流,但设置方面有一些重要差别。 有关详细信息,请参阅“[标识和授权 GitHub 应用的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 +注意:如果要生成 GitHub 应用,仍可以使用 OAuth Web 应用程序流,但设置方面有一些重要差别。有关详细信息,请参阅“[标识和授权 GitHub 应用的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 {% endnote %} @@ -57,15 +57,15 @@ ms.locfileid: '147717787' 名称 | 类型 | 说明 -----|------|-------------- `client_id`|`string` | “必需”。 {% ifversion fpt or ghec %}[注册](https://github.com/settings/applications/new){% else %}registered{% endif %}时从 GitHub 收到的客户端 ID。 -`redirect_uri`|`string` | 用户获得授权后被发送到的应用程序中的 URL。 请参阅以下有关[重定向 URL](#redirect-urls) 的详细信息。 +`redirect_uri`|`string` | 用户获得授权后被发送到的应用程序中的 URL。请参阅以下有关[重定向 URL](#redirect-urls) 的详细信息。 `login` | `string` | 提供用于登录和授权应用程序的特定账户。 -`scope`|`string` | [范围](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)的空格分隔列表。 如果未提供,则 `scope` 默认为未授权应用程序的任何范围的用户的空列表。 对于已向应用程序授权作用域的用户,不会显示含作用域列表的 OAuth 授权页面。 相反,通过用户向应用程序授权的作用域集,此流程步骤将自动完成。 例如,如果用户已经执行了两次 Web 流,并且已授权一个具有 `user` 范围的令牌和另一个具有 `repo` 范围的令牌,则不提供 `scope` 的第三个 Web 流将收到具有 `user` 和 `repo` 范围的令牌。 +`scope`|`string` | [范围](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)的空格分隔列表。如果未提供,则 `scope` 默认为未授权应用程序的任何范围的用户的空列表。对于已向应用程序授权作用域的用户,不会显示含作用域列表的 OAuth 授权页面。相反,通过用户向应用程序授权的作用域集,此流程步骤将自动完成。例如,如果用户已经执行了两次 Web 流,并且已授权一个具有 `user` 范围的令牌和另一个具有 `repo` 范围的令牌,则不提供 `scope` 的第三个 Web 流将收到具有 `user` 和 `repo` 范围的令牌。 `state` | `string` | {% data reusables.apps.state_description %} -`allow_signup`|`string` | 在 OAuth 流程中,是否向经过验证的用户提供注册 GitHub 的选项。 默认为 `true`。 在策略禁止注册时使用 `false`。 +`allow_signup`|`string` | 在 OAuth 流程中,是否向经过验证的用户提供注册 GitHub 的选项。默认为 `true`。在策略禁止注册时使用 `false`。 ### 2. 用户被 GitHub 重定向回你的站点 -如果用户接受你的请求,{% data variables.product.product_name %} 会使用代码参数中的临时 `code` 以及你在上一步的 `state` 参数中提供的状态重定向回你的站点。 临时代码将在 10 分钟后到期。 如果状态不匹配,然后第三方创建了请求,您应该中止此过程。 +如果用户接受你的请求,{% data variables.product.product_name %} 会使用代码参数中的临时 `code` 以及你在上一步的 `state` 参数中提供的状态重定向回你的站点。临时代码将在 10 分钟后到期。如果状态不匹配,然后第三方创建了请求,您应该中止此过程。 将此 `code` 交换为访问令牌: @@ -133,7 +133,7 @@ curl -H "Authorization: Bearer OAUTH-TOKEN" {% data variables.product.api_url_pr {% ifversion device-flow-is-opt-in %} -在使用设备流识别和授权用户之前,必须先在应用的设置中启用它。 有关在应用中启用设备流的详细信息,请参阅“[修改 OAuth 应用](/developers/apps/managing-oauth-apps/modifying-an-oauth-app)”(适用于 OAuth 应用)和“[修改 GitHub 应用](/developers/apps/managing-github-apps/modifying-a-github-app)”(适用于 GitHub 应用)。 +在使用设备流识别和授权用户之前,必须先在应用的设置中启用它。有关在应用中启用设备流的详细信息,请参阅“[修改 OAuth 应用](/developers/apps/managing-oauth-apps/modifying-an-oauth-app)”(适用于 OAuth 应用)和“[修改 GitHub 应用](/developers/apps/managing-github-apps/modifying-a-github-app)”(适用于 GitHub 应用)。 {% endif %} @@ -141,13 +141,13 @@ curl -H "Authorization: Bearer OAUTH-TOKEN" {% data variables.product.api_url_pr 1. 您的应用程序会请求设备和用户验证码,并获取用户将在其中输入用户验证码的授权 URL。 2. 应用程序提示用户在 {% data variables.product.device_authorization_url %} 中输入用户验证码。 -3. 应用程序轮询用户身份验证状态。 用户授权设备后,应用程序将能够使用新的访问令牌进行 API 调用。 +3. 应用程序轮询用户身份验证状态。用户授权设备后,应用程序将能够使用新的访问令牌进行 API 调用。 ### 第 1 步:应用程序从 GitHub 请求设备和用户验证码 POST {% data variables.product.oauth_host_code %}/login/device/code -您的应用程序必须请求用户验证码和验证 URL,因为应用程序在下一步中提示用户进行身份验证时将使用它们。 此请求还返回设备验证代码,应用程序必须使用它们来接收访问令牌和检查用户身份验证的状态。 +您的应用程序必须请求用户验证码和验证 URL,因为应用程序在下一步中提示用户进行身份验证时将使用它们。此请求还返回设备验证代码,应用程序必须使用它们来接收访问令牌和检查用户身份验证的状态。 #### 输入参数 @@ -193,10 +193,10 @@ Accept: application/xml 名称 | 类型 | 说明 -----|------|-------------- `device_code` | `string` | 设备验证码为 40 个字符,用于验证设备。 -`user_code` | `string` | 用户验证码显示在设备上,以便用户可以在浏览器中输入该代码。 此代码为 8 个字符,中间有连字符。 +`user_code` | `string` | 用户验证码显示在设备上,以便用户可以在浏览器中输入该代码。此代码为 8 个字符,中间有连字符。 `verification_uri` | `string` | 用户需要在其中输入 `user_code` 的验证 URL:{% data variables.product.device_authorization_url %}。 -`expires_in` | `integer`| `device_code` 和 `user_code` 过期之前的秒数。 默认值为 900 秒或 15 分钟。 -`interval` | `integer` | 在能够发出新的访问令牌请求 (`POST {% data variables.product.oauth_host_code %}/login/oauth/access_token`) 以完成设备授权之前必须经过的最短秒数。 例如,如果间隔为 5,则只有经过 5 秒后才能发出新请求。 如果在 5 秒内发出多个请求,则将达到速率限制并收到 `slow_down` 错误。 +`expires_in` | `integer`| `device_code` 和 `user_code` 过期之前的秒数。默认值为 900 秒或 15 分钟。 +`interval` | `integer` | 在能够发出新的访问令牌请求 (`POST {% data variables.product.oauth_host_code %}/login/oauth/access_token`) 以完成设备授权之前必须经过的最短秒数。例如,如果间隔为 5,则只有经过 5 秒后才能发出新请求。如果在 5 秒内发出多个请求,则将达到速率限制并收到 `slow_down` 错误。 ### 第 2 步:提示用户在浏览器中输入用户代码 @@ -208,11 +208,11 @@ Accept: application/xml POST {% data variables.product.oauth_host_code %}/login/oauth/access_token -应用将发出轮询 `POST {% data variables.product.oauth_host_code %}/login/oauth/access_token` 的设备授权请求,直到设备和用户代码过期,或者用户已使用有效的用户代码成功授权应用。 应用必须使用在步骤 1 中检索到的最短轮询 `interval`,以免出现速率限制错误。 有关详细信息,请参阅“[设备流的速率限制](#rate-limits-for-the-device-flow)”。 +应用将发出轮询 `POST {% data variables.product.oauth_host_code %}/login/oauth/access_token` 的设备授权请求,直到设备和用户代码过期,或者用户已使用有效的用户代码成功授权应用。应用必须使用在步骤 1 中检索到的最短轮询 `interval`,以免出现速率限制错误。有关详细信息,请参阅“[设备流的速率限制](#rate-limits-for-the-device-flow)”。 -用户必须在 15 分钟(或 900 秒内)内输入有效代码。 15 分钟后,需要使用 `POST {% data variables.product.oauth_host_code %}/login/device/code` 请求新的设备授权代码。 +用户必须在 15 分钟(或 900 秒内)内输入有效代码。15 分钟后,需要使用 `POST {% data variables.product.oauth_host_code %}/login/device/code` 请求新的设备授权代码。 -一旦用户授权, 应用程序将收到一个访问令牌,该令牌可用于代表用户向 API 发出请求。 +一旦用户授权,应用程序将收到一个访问令牌,该令牌可用于代表用户向 API 发出请求。 #### 输入参数 @@ -254,26 +254,26 @@ Accept: application/xml 当用户在浏览器上提交验证码时,每个应用程序在一个小时内的提交速率限制为 50 个。 -如果在请求之间所需的最小时间范围(即 `interval`)内发出多个访问令牌请求 (`POST {% data variables.product.oauth_host_code %}/login/oauth/access_token`),你将达到速率限制,并收到 `slow_down` 错误响应。 `slow_down` 错误响应向上一个 `interval` 添加 5 秒钟的时间。 有关详细信息,请参阅[设备流错误](#errors-for-the-device-flow)。 +如果在请求之间所需的最小时间范围(即 `interval`)内发出多个访问令牌请求 (`POST {% data variables.product.oauth_host_code %}/login/oauth/access_token`),你将达到速率限制,并收到 `slow_down` 错误响应。 `slow_down` 错误响应向上一个 `interval` 添加 5 秒钟的时间。有关详细信息,请参阅[设备流错误](#errors-for-the-device-flow)。 ### 设备流程的错误代码 | 错误代码 | 说明 | |----|----| -| `authorization_pending`| 授权请求待处理并且用户尚未输入用户代码时,将发生此错误。 应用应在不超出 [`interval`](#response-parameters) 的情况下继续轮询 `POST {% data variables.product.oauth_host_code %}/login/oauth/access_token` 请求,这需要每个请求之间的最短秒数。 | -| `slow_down` | 收到 `slow_down` 错误时,会使用 `POST {% data variables.product.oauth_host_code %}/login/oauth/access_token` 向请求之间所需的最短 `interval` 或时间范围添加 5 秒钟的额外时间。 例如,如果请求之间的启动间隔至少需要 5 秒,并且你收到了 `slow_down` 错误响应,那么现在必须等待至少 10 秒,然后才能发出新的 OAuth 访问令牌请求。 错误响应包括必须使用的新 `interval`。 -| `expired_token` | 如果设备代码已过期,则将看到 `token_expired` 错误。 您必须发出新的设备代码请求。 +| `authorization_pending`| 授权请求待处理并且用户尚未输入用户代码时,将发生此错误。应用应在不超出 [`interval`](#response-parameters) 的情况下继续轮询 `POST {% data variables.product.oauth_host_code %}/login/oauth/access_token` 请求,这需要每个请求之间的最短秒数。 | +| `slow_down` | 收到 `slow_down` 错误时,会使用 `POST {% data variables.product.oauth_host_code %}/login/oauth/access_token` 向请求之间所需的最短 `interval` 或时间范围添加 5 秒钟的额外时间。例如,如果请求之间的启动间隔至少需要 5 秒,并且你收到了 `slow_down` 错误响应,那么现在必须等待至少 10 秒,然后才能发出新的 OAuth 访问令牌请求。错误响应包括必须使用的新 `interval`。 +| `expired_token` | 如果设备代码已过期,则将看到 `token_expired` 错误。您必须发出新的设备代码请求。 | `unsupported_grant_type` | 轮询 OAuth 令牌请求 `POST {% data variables.product.oauth_host_code %}/login/oauth/access_token` 时,授权类型必须为 `urn:ietf:params:oauth:grant-type:device_code` 并且必须作为输入参数包含在内。 -| `incorrect_client_credentials` | 对于设备流程,您必须传递应用程序的客户端 ID,您可以在应用程序设置页面上找到该 ID。 设备流不需要 `client_secret`。 +| `incorrect_client_credentials` | 对于设备流程,您必须传递应用程序的客户端 ID,您可以在应用程序设置页面上找到该 ID。设备流不需要 `client_secret`。 | `incorrect_device_code` | 提供的 device_code 无效。 | `access_denied` | 当用户在授权过程中单击取消时,你将收到 `access_denied` 错误,该用户将无法再次使用验证码。{% ifversion device-flow-is-opt-in %} -| `device_flow_disabled` | 尚未在应用的设置中启用设备流。 有关详细信息,请参阅“[设备流](#device-flow)”。{% endif %} +| `device_flow_disabled` | 尚未在应用的设置中启用设备流。有关详细信息,请参阅“[设备流](#device-flow)”。{% endif %} 有关详细信息,请参阅“[OAuth 2.0 设备授权](https://tools.ietf.org/html/rfc8628#section-3.5)”。 ## 非 Web 应用程序流程 -非 web 身份验证适用于测试等有限的情况。 如果需要,可以使用[基本身份验证](/rest/overview/other-authentication-methods#basic-authentication)通过[个人访问令牌设置页](/articles/creating-an-access-token-for-command-line-use)创建个人访问令牌。 此方法支持用户随时撤销访问权限。 +非 web 身份验证适用于测试等有限的情况。如果需要,可以使用[基本身份验证](/rest/overview/other-authentication-methods#basic-authentication)通过[个人访问令牌设置页](/articles/creating-an-access-token-for-command-line-use)创建个人访问令牌。此方法支持用户随时撤销访问权限。 {% ifversion fpt or ghes or ghec %} {% note %} @@ -283,7 +283,7 @@ Accept: application/xml ## 重定向 URL -`redirect_uri` 参数是可选的。 如果忽略该参数,GitHub 会将用户重定向到 OAuth 应用程序设置中配置的回叫 URL。 如果提供该参数,重定向 URL 的主机和端口必须与回叫 URL 完全匹配。 重定向 URL 的路径必须引用回叫 URL 的子目录。 +`redirect_uri` 参数是可选的。如果忽略该参数,GitHub 会将用户重定向到 OAuth 应用程序设置中配置的回叫 URL。如果提供该参数,重定向 URL 的主机和端口必须与回叫 URL 完全匹配。重定向 URL 的路径必须引用回叫 URL 的子目录。 CALLBACK: http://example.com/path @@ -297,7 +297,7 @@ Accept: application/xml ### 本地主机重定向 URL -可选 `redirect_uri` 参数还可用于本地主机 URL。 如果应用程序指定 URL 和端口,授权后,应用程序用户将被重定向到提供的 URL 和端口。 `redirect_uri` 不需要与应用的回叫 URL 中指定的端口匹配。 +可选 `redirect_uri` 参数还可用于本地主机 URL。如果应用程序指定 URL 和端口,授权后,应用程序用户将被重定向到提供的 URL 和端口。 `redirect_uri` 不需要与应用的回叫 URL 中指定的端口匹配。 对于 `http://127.0.0.1/path` 回叫 URL,可以使用以下 `redirect_uri`: @@ -309,7 +309,7 @@ http://127.0.0.1:1234/path 您可以为用户/应用程序/作用域组合创建多个令牌,以便为特定用例创建令牌。 -如果您的 OAuth 应用程序支持一个使用 GitHub 登录且只需基本用户信息的工作流程,此方法将非常有用。 另一个工作流程可能需要访问用户的私有仓库。 您的 OAuth 应用程序可以使用多个令牌为每个用例执行 web 流程,只需要所需的作用域。 如果用户仅使用您的应用程序登录,则无需向他们的私有仓库授予您的 OAuth 应用程序访问权限。 +如果您的 OAuth 应用程序支持一个使用 GitHub 登录且只需基本用户信息的工作流程,此方法将非常有用。另一个工作流程可能需要访问用户的私有仓库。您的 OAuth 应用程序可以使用多个令牌为每个用例执行 web 流程,只需要所需的作用域。如果用户仅使用您的应用程序登录,则无需向他们的私有仓库授予您的 OAuth 应用程序访问权限。 {% data reusables.apps.oauth-token-limit %} diff --git a/translations/zh-CN/content/developers/apps/building-oauth-apps/creating-a-custom-badge-for-your-oauth-app.md b/translations/zh-CN/content/developers/apps/building-oauth-apps/creating-a-custom-badge-for-your-oauth-app.md index a6e809cc2ee5..fc85b448057a 100644 --- a/translations/zh-CN/content/developers/apps/building-oauth-apps/creating-a-custom-badge-for-your-oauth-app.md +++ b/translations/zh-CN/content/developers/apps/building-oauth-apps/creating-a-custom-badge-for-your-oauth-app.md @@ -24,9 +24,9 @@ ms.locfileid: '147876028' ![默认肖像](/assets/images/identicon.png) -创建 OAuth 应用程序后,可以通过上传徽标和选择背景颜色自定义应用程序的徽章。 徽章是圆形徽章内的方形徽标图像。 您可以为徽章选择背景颜色,以便从视觉上区分您的应用程序。 +创建 OAuth 应用程序后,可以通过上传徽标和选择背景颜色自定义应用程序的徽章。徽章是圆形徽章内的方形徽标图像。您可以为徽章选择背景颜色,以便从视觉上区分您的应用程序。 -徽标应为 1 MB 以下的 PNG、JPG 或 GIF 文件。 为获得最佳渲染效果,建议图像大小至少为 200px x 200px。 {% ifversion fpt or ghec %}有关自定义徽章的详细指南,请参阅“[徽标和徽章图像的提示](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/#guidelines-for-logos)”。{% endif %} +徽标应为 1 MB 以下的 PNG、JPG 或 GIF 文件。为获得最佳渲染效果,建议图像大小至少为 200px x 200px。 {% ifversion fpt or ghec %}有关自定义徽章的详细指南,请参阅“[徽标和徽章图像的提示](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/#guidelines-for-logos)”。{% endif %} {% ifversion fpt or ghec %} @@ -39,7 +39,7 @@ ms.locfileid: '147876028' {% data reusables.user-settings.access_settings %} {% data reusables.user-settings.developer_settings %} {% data reusables.user-settings.oauth_apps %} {% data reusables.user-settings.modify_oauth_app %} 1. 在“应用程序徽标”中,从本地文件夹拖放图像,或单击“上传新徽标”,从计算机选择图像。 ![上传徽标](/assets/images/oauth-apps/oauth_apps_upload_logo.png) -6. 裁剪图片。 完成后,单击“设置新应用程序徽标”。 +6. 裁剪图片。完成后,单击“设置新应用程序徽标”。 ![裁剪和设置徽标](/assets/images/oauth-apps/oauth_apps_crop_and_set_logo.png) 7. 在“徽章背景色”中,键入徽章背景色的[十六进制颜色代码](http://www.color-hex.com/)。 {% ifversion fpt or ghec %}**注意:** “徽章背景色”输入字段将在上传应用程序徽标后可见。{% endif %} ![徽章背景色](/assets/images/oauth-apps/oauth_apps_badge_background_color.png) {% data reusables.user-settings.update_oauth_app %} diff --git a/translations/zh-CN/content/developers/apps/building-oauth-apps/creating-an-oauth-app.md b/translations/zh-CN/content/developers/apps/building-oauth-apps/creating-an-oauth-app.md index 2e35aac94fa1..445cd41b36c7 100644 --- a/translations/zh-CN/content/developers/apps/building-oauth-apps/creating-an-oauth-app.md +++ b/translations/zh-CN/content/developers/apps/building-oauth-apps/creating-an-oauth-app.md @@ -39,7 +39,7 @@ ms.locfileid: '146180341' {% warning %} - 警告:仅在 OAuth 应用中使用你考虑公开的信息。 创建 OAuth 应用程序时,应避免使用敏感数据(如内部 URL)。 + 警告:仅在 OAuth 应用中使用你考虑公开的信息。创建 OAuth 应用程序时,应避免使用敏感数据(如内部 URL)。 {% endwarning %} @@ -53,7 +53,7 @@ ms.locfileid: '146180341' 注意:与 {% data variables.product.prodname_github_apps %} 不同,OAuth 应用不能有多个回调 URL。 {% endnote %} {% endif %}{% ifversion device-flow-is-opt-in %} -1. 如果 OAuth 应用将使用设备流来识别和授权用户,请单击“启用设备流”。 有关设备流的详细信息,请参阅“[授权 OAuth 应用](/developers/apps/building-oauth-apps/authorizing-oauth-apps#device-flow)”。 +1. 如果 OAuth 应用将使用设备流来识别和授权用户,请单击“启用设备流”。有关设备流的详细信息,请参阅“[授权 OAuth 应用](/developers/apps/building-oauth-apps/authorizing-oauth-apps#device-flow)”。 ![显示启用设备流的字段的屏幕截图](/assets/images/oauth-apps/enable-device-flow.png){% endif %} 2. 单击“注册应用程序”。 ![注册应用程序的按钮](/assets/images/oauth-apps/oauth_apps_register_application.png) diff --git a/translations/zh-CN/content/developers/apps/building-oauth-apps/index.md b/translations/zh-CN/content/developers/apps/building-oauth-apps/index.md index 02b121eb4f50..9eb467a0eb64 100644 --- a/translations/zh-CN/content/developers/apps/building-oauth-apps/index.md +++ b/translations/zh-CN/content/developers/apps/building-oauth-apps/index.md @@ -1,6 +1,6 @@ --- title: 构建 OAuth 应用程序 -intro: 您可以构建您自己或其他人使用的 OAuth 应用程序。 了解如何注册和设置 OAuth 应用程序的权限及身份验证选项。 +intro: 您可以构建您自己或其他人使用的 OAuth 应用程序。了解如何注册和设置 OAuth 应用程序的权限及身份验证选项。 redirect_from: - /apps/building-integrations/setting-up-and-registering-oauth-apps - /apps/building-oauth-apps diff --git a/translations/zh-CN/content/developers/apps/building-oauth-apps/scopes-for-oauth-apps.md b/translations/zh-CN/content/developers/apps/building-oauth-apps/scopes-for-oauth-apps.md index 380cdadf6dc6..07a438e015eb 100644 --- a/translations/zh-CN/content/developers/apps/building-oauth-apps/scopes-for-oauth-apps.md +++ b/translations/zh-CN/content/developers/apps/building-oauth-apps/scopes-for-oauth-apps.md @@ -24,11 +24,11 @@ ms.locfileid: '147717939' {% note %} -注意:如果你在构建 GitHub 应用,则不需要在授权请求中提供范围。 有关详细信息,请参阅“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 +注意:如果你在构建 GitHub 应用,则不需要在授权请求中提供范围。有关详细信息,请参阅“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 {% endnote %} -如果 {% data variables.product.prodname_oauth_app %} 无法访问浏览器(如 CLI 工具),则无需为用户指定向应用程序验证的作用域。 有关详细信息,请参阅“[授权 OAuth 应用](/developers/apps/authorizing-oauth-apps#device-flow)”。 +如果 {% data variables.product.prodname_oauth_app %} 无法访问浏览器(如 CLI 工具),则无需为用户指定向应用程序验证的作用域。有关详细信息,请参阅“[授权 OAuth 应用](/developers/apps/authorizing-oauth-apps#device-flow)”。 检查标头以查看您拥有哪些 OAuth 作用域,以及 API 操作接受什么: @@ -44,9 +44,9 @@ X-Accepted-OAuth-Scopes: user ## 可用的范围 -名称 | 说明 -----|-----------|{% ifversion not ghae %} **`(no scope)`** | 授予对公共信息(包括用户个人资料信息、存储库信息和 Gist)的只读访问权限{% endif %}{% ifversion ghes or ghae %} **`site_admin`** | 向站点管理员授予对 [{% data variables.product.prodname_ghe_server %} 管理 API 终结点](/rest/reference/enterprise-admin)的访问权限。{% endif %} **`repo`** | 授予对公共{% ifversion ghec or ghes or ghae %}、内部{% endif %}和专用存储库的完全访问权限,包括对代码、提交状态、存储库邀请、协作者、部署状态和存储库 Webhook 的读写权限。 注意:除了存储库相关资源外,`repo` 范围还授予对组织拥有的资源(包括项目、邀请、团队成员身份和 Webhook)的管理权限。 此范围还授予对用户所拥有的项目的管理权限。 - `repo:status`| 授予对{% ifversion fpt %}公共和专用{% elsif ghec or ghes %}公共、专用和内部{% elsif ghae %}专用和内部{% endif %}存储库中的提交状态的读/写访问权限。 仅在授予其他用户或服务对专用存储库提交状态的访问权限而不授予对代码的访问权限时,才需要此范围。 - `repo_deployment`| 授予对 {% ifversion not ghae %}公共{% else %}内部{% endif %}和专用存储库的[部署状态](/rest/reference/repos#deployments)的访问权限。 仅在授予其他用户或服务对部署状态的访问权限而不授予对代码的访问权限时,才需要此范围。{% ifversion not ghae %}  `public_repo`| 将访问权限限制为公共存储库。 这包括对公共仓库和组织的代码、提交状态、仓库项目、协作者以及部署状态的读取/写入权限。 对公共存储库标星也需要此权限。{% endif %}  `repo:invite` | 授予接受/拒绝存储库协作邀请的权限。 仅在授予其他用户或服务对邀请的访问权限而不授予对代码的访问权限时,才需要此范围。{% ifversion fpt or ghes or ghec %}  `security_events` | 授予:
对 [{% data variables.product.prodname_code_scanning %} API](/rest/reference/code-scanning) {%- ifversion ghec %} 中安全事件的读取和写入权限
对 [{% data variables.product.prodname_secret_scanning %} API](/rest/reference/secret-scanning){%- endif %} 中安全事件的读取和写入权限
仅在授予其他用户或服务对安全事件的访问权限而不授予对代码的访问权限时,才需要此范围。{% endif %} **`admin:repo_hook`** | 授予对{% ifversion fpt %}公共或专用{% elsif ghec or ghes %}公共、专用或内部{% elsif ghae %}专用或内部{% endif %}存储库中存储库挂钩的读取、写入、ping 和删除访问权限。 `repo` {% ifversion fpt or ghec or ghes %}和 `public_repo` 范围授予{% else %}范围授予{% endif %}对存储库(包括存储库挂钩)的完全访问权限。 使用 `admin:repo_hook` 范围将访问权限限制为仅存储库挂钩。 +名称 | 说明 -----|-----------|{% ifversion not ghae %} **`(no scope)`** | 授予对公共信息(包括用户个人资料信息、存储库信息和 Gist)的只读访问权限{% endif %}{% ifversion ghes or ghae %} **`site_admin`** | 向站点管理员授予对 [{% data variables.product.prodname_ghe_server %} 管理 API 终结点](/rest/reference/enterprise-admin)的访问权限。{% endif %} **`repo`** | 授予对公共{% ifversion ghec or ghes or ghae %}、内部{% endif %}和专用存储库的完全访问权限,包括对代码、提交状态、存储库邀请、协作者、部署状态和存储库 Webhook 的读写权限。注意:除了存储库相关资源外,`repo` 范围还授予对组织拥有的资源(包括项目、邀请、团队成员身份和 Webhook)的管理权限。此范围还授予对用户所拥有的项目的管理权限。 + `repo:status`| 授予对{% ifversion fpt %}公共和专用{% elsif ghec or ghes %}公共、专用和内部{% elsif ghae %}专用和内部{% endif %}存储库中的提交状态的读/写访问权限。仅在授予其他用户或服务对专用存储库提交状态的访问权限而不授予对代码的访问权限时,才需要此范围。 + `repo_deployment`| 授予对 {% ifversion not ghae %}公共{% else %}内部{% endif %}和专用存储库的[部署状态](/rest/reference/repos#deployments)的访问权限。仅在授予其他用户或服务对部署状态的访问权限而不授予对代码的访问权限时,才需要此范围。{% ifversion not ghae %}  `public_repo`| 将访问权限限制为公共存储库。这包括对公共仓库和组织的代码、提交状态、仓库项目、协作者以及部署状态的读取/写入权限。对公共存储库标星也需要此权限。{% endif %}  `repo:invite` | 授予接受/拒绝存储库协作邀请的权限。仅在授予其他用户或服务对邀请的访问权限而不授予对代码的访问权限时,才需要此范围。{% ifversion fpt or ghes or ghec %}  `security_events` | 授予:
对 [{% data variables.product.prodname_code_scanning %} API](/rest/reference/code-scanning) {%- ifversion ghec %} 中安全事件的读取和写入权限
对 [{% data variables.product.prodname_secret_scanning %} API](/rest/reference/secret-scanning){%- endif %} 中安全事件的读取和写入权限
仅在授予其他用户或服务对安全事件的访问权限而不授予对代码的访问权限时,才需要此范围。{% endif %} **`admin:repo_hook`** | 授予对{% ifversion fpt %}公共或专用{% elsif ghec or ghes %}公共、专用或内部{% elsif ghae %}专用或内部{% endif %}存储库中存储库挂钩的读取、写入、ping 和删除访问权限。 `repo` {% ifversion fpt or ghec or ghes %}和 `public_repo` 范围授予{% else %}范围授予{% endif %}对存储库(包括存储库挂钩)的完全访问权限。使用 `admin:repo_hook` 范围将访问权限限制为仅存储库挂钩。  `write:repo_hook` | 授予对{% ifversion fpt %}公共或专用{% elsif ghec or ghes %}公共、专用或内部{% elsif ghae %}专用或内部{% endif %}存储库中挂钩的读取、写入和 ping 访问权限。  `read:repo_hook`| 授予对{% ifversion fpt %}公共或专用{% elsif ghec or ghes %}公共、专用或内部{% elsif ghae %}专用或内部{% endif %}存储库中挂钩的读取和 ping 访问权限。 **`admin:org`** | 全面管理组织及其团队、项目和成员。 @@ -55,24 +55,24 @@ X-Accepted-OAuth-Scopes: user **`admin:public_key`** | 全面管理公钥。  `write:public_key`| 创建、列出和查看公钥的详细信息。  `read:public_key`| 列出和查看公钥的详细信息。 -**`admin:org_hook`** | 授予对组织挂钩的读取、写入、ping 和删除权限。 注意:OAuth 令牌只能对由 OAuth 应用创建的组织挂钩执行这些操作。 个人访问令牌只能对用户创建的组织挂钩执行这些操作。 +**`admin:org_hook`** | 授予对组织挂钩的读取、写入、ping 和删除权限。注意:OAuth 令牌只能对由 OAuth 应用创建的组织挂钩执行这些操作。个人访问令牌只能对用户创建的组织挂钩执行这些操作。 **`gist`** | 授予对 Gist 的写入权限。 **`notifications`** | 授予:
* 对用户的通知的读取访问权限
* 对线程的“标记为读取”访问权限
* 对存储库的监视和取消监视访问权限,以及
* 对线程订阅的读取、写入和删除访问权限。 -**`user`** | 仅授予对个人资料的读取/写入权限。 请注意,此范围包括 `user:email` 和 `user:follow`。 +**`user`** | 仅授予对个人资料的读取/写入权限。请注意,此范围包括 `user:email` 和 `user:follow`。  `read:user`| 授予读取用户个人资料数据的权限。  `user:email`| 授予对用户电子邮件地址的读取权限。  `user:follow`| 授予关注或取消关注其他用户的权限。{% ifversion projects-oauth-scope %} **`project`** | 授予对用户和组织 {% data variables.projects.projects_v2 %} 的读/写访问权限。  `read:project`| 授予对用户和组织 {% data variables.projects.projects_v2 %} 的只读访问权限。{% endif %} **`delete_repo`** | 授予删除可管理存储库的权限。 **`write:discussion`** | 授予对团队讨论的读取和写入权限。  `read:discussion` | 授予对团队讨论的读取权限。 -**`write:packages`** | 授予在 {% data variables.product.prodname_registry %} 中上传或发布包的权限。 有关详细信息,请参阅“[发布包](/github/managing-packages-with-github-packages/publishing-a-package)”。 -**`read:packages`** | 授予从 {% data variables.product.prodname_registry %} 下载或安装包的权限。 有关详细信息,请参阅“[安装包](/github/managing-packages-with-github-packages/installing-a-package)”。 -**`delete:packages`** | 授予从 {% data variables.product.prodname_registry %} 删除包的权限。 有关详细信息,请参阅“[删除和还原包](/packages/learn-github-packages/deleting-and-restoring-a-package)”。 +**`write:packages`** | 授予在 {% data variables.product.prodname_registry %} 中上传或发布包的权限。有关详细信息,请参阅“[发布包](/github/managing-packages-with-github-packages/publishing-a-package)”。 +**`read:packages`** | 授予从 {% data variables.product.prodname_registry %} 下载或安装包的权限。有关详细信息,请参阅“[安装包](/github/managing-packages-with-github-packages/installing-a-package)”。 +**`delete:packages`** | 授予从 {% data variables.product.prodname_registry %} 删除包的权限。有关详细信息,请参阅“[删除和还原包](/packages/learn-github-packages/deleting-and-restoring-a-package)”。 **`admin:gpg_key`** | 全面管理 GPG 密钥。  `write:gpg_key`| 创建、列出和查看 GPG 密钥的详细信息。 - `read:gpg_key`| 列出和查看 GPG 密钥的详细信息。{% ifversion fpt or ghec %} **`codespace`** | 授予创建和管理 codespace 的权限。 Codespaces 可以暴露可能有不同范围集的 GITHUB_TOKEN。 有关详细信息,请参阅“[{% data variables.product.prodname_github_codespaces %} 中的安全性](/codespaces/codespaces-reference/security-in-github-codespaces#authentication)”。{% endif %} **`workflow`** | 授予添加和更新 {% data variables.product.prodname_actions %} 工作流文件的权限。 如果在同一仓库中的另一个分支上存在相同的文件(具有相同的路径和内容),则工作流程文件可以在没有此作用域的情况下提交。 工作流文件可以公开可能有不同范围集的 `GITHUB_TOKEN`。 有关详细信息,请参阅“[工作流中的身份验证](/actions/reference/authentication-in-a-workflow#permissions-for-the-github_token)”。{% ifversion not fpt %} `admin:enterprise` | 完全掌控企业功能。 有关详细信息,请参阅 GraphQL API 文档中的“[管理企业帐户](/graphql/guides/managing-enterprise-accounts)”。

包括 `manage_runners:enterprise`{% ifversion ghec or ghes > 3.3 %}、`manage_billing:enterprise`、{% endif %} 和 `read:enterprise`。  `manage_runners:enterprise` | 完全掌控企业内部的自承载运行程序。 有关详细信息,请参阅[关于自承载运行器](/actions/hosting-your-own-runners/about-self-hosted-runners)。 {% ifversion ghec or ghes > 3.3 %}  `manage_billing:enterprise` | 读取和写入企业账单数据。 有关详细信息,请参阅 REST API 文档中的“[账单](/rest/billing)”。 {% endif %}  `read:enterprise` | 读取企业资料中的所有数据。 不包括企业成员或组织的个人资料数据。{% endif %} {% note %} + `read:gpg_key`| 列出和查看 GPG 密钥的详细信息。{% ifversion fpt or ghec %} **`codespace`** | 授予创建和管理 codespace 的权限。Codespaces 可以暴露可能有不同范围集的 GITHUB_TOKEN。有关详细信息,请参阅“[{% data variables.product.prodname_github_codespaces %} 中的安全性](/codespaces/codespaces-reference/security-in-github-codespaces#authentication)”。{% endif %} **`workflow`** | 授予添加和更新 {% data variables.product.prodname_actions %} 工作流文件的权限。如果在同一仓库中的另一个分支上存在相同的文件 (具有相同的路径和内容),则工作流程文件可以在没有此作用域的情况下提交。工作流文件可以公开可能有不同范围集的 `GITHUB_TOKEN`。有关详细信息,请参阅“[工作流中的身份验证](/actions/reference/authentication-in-a-workflow#permissions-for-the-github_token)”。{% ifversion not fpt %} `admin:enterprise` | 完全掌控企业功能。有关详细信息,请参阅 GraphQL API 文档中的“[管理企业帐户](/graphql/guides/managing-enterprise-accounts)”。

包括 `manage_runners:enterprise`{% ifversion ghec or ghes > 3.3 %}、`manage_billing:enterprise`、{% endif %} 和 `read:enterprise`。  `manage_runners:enterprise` | 完全掌控企业内部的自承载运行程序。有关详细信息,请参阅[关于自承载运行器](/actions/hosting-your-own-runners/about-self-hosted-runners)。 {% ifversion ghec or ghes > 3.3 %}  `manage_billing:enterprise` | 读取和写入企业账单数据。有关详细信息,请参阅 REST API 文档中的“[账单](/rest/billing)”。 {% endif %}  `read:enterprise` | 读取企业资料中的所有数据。不包括企业成员或组织的个人资料数据。{% endif %} {% note %} -注意:OAuth 应用可以在初始重定向中请求范围。 可使用 `%20` 以空格分隔多个范围来指定它们: +注意:OAuth 应用可以在初始重定向中请求范围。可使用 `%20` 以空格分隔多个范围来指定它们: https://github.com/login/oauth/authorize? client_id=...& @@ -82,11 +82,11 @@ X-Accepted-OAuth-Scopes: user ## 请求的作用域和授予的作用域 -`scope` 属性列出了附加到用户授予的令牌的范围。 通常,这些作用域与您请求的作用域相同。 -但是,用户可以编辑其范围,实际授予应用程序更少的权限(相比你最初请求的权限)。 此外,用户还可以在 OAuth 流程完成后编辑令牌范围。 +`scope` 属性列出了附加到用户授予的令牌的范围。通常,这些作用域与您请求的作用域相同。 +但是,用户可以编辑其范围,实际授予应用程序更少的权限(相比你最初请求的权限)。此外,用户还可以在 OAuth 流程完成后编辑令牌范围。 你应该意识到这种可能性,并相应地调整应用程序的行为。 -如果用户选择授予更少的权限(相比你最初请求的权限),妥善处理这种错误情况非常重要。 例如,应用程序可以警告或以其他方式告诉用户,他们可用的功能会减少或者无法执行某些操作。 +如果用户选择授予更少的权限(相比你最初请求的权限),妥善处理这种错误情况非常重要。例如,应用程序可以警告或以其他方式告诉用户,他们可用的功能会减少或者无法执行某些操作。 此外,应用程序总是可以将用户送回流程以获取更多权限,但不要忘记,用户总是可以说不。 @@ -94,4 +94,4 @@ X-Accepted-OAuth-Scopes: user ## 标准化作用域 -请求多个范围时,将用标准化的范围列表保存令牌,而放弃其他请求的范围隐式包含的那些范围。 例如,请求 `user,gist,user:email` 将生成仅具有 `user` 和 `gist` 范围的令牌,因为使用 `user:email` 范围授予的权限包含在 `user` 范围中。 +请求多个范围时,将用标准化的范围列表保存令牌,而放弃其他请求的范围隐式包含的那些范围。例如,请求 `user,gist,user:email` 将生成仅具有 `user` 和 `gist` 范围的令牌,因为使用 `user:email` 范围授予的权限包含在 `user` 范围中。 diff --git a/translations/zh-CN/content/developers/apps/getting-started-with-apps/about-apps.md b/translations/zh-CN/content/developers/apps/getting-started-with-apps/about-apps.md index 0e14ac3fdca3..d92e5c4f3bb8 100644 --- a/translations/zh-CN/content/developers/apps/getting-started-with-apps/about-apps.md +++ b/translations/zh-CN/content/developers/apps/getting-started-with-apps/about-apps.md @@ -21,9 +21,9 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/11/2022 ms.locfileid: '145085040' --- -{% data variables.product.prodname_dotcom %} 上的应用程序允许您自动化并改进工作流程。 可以生成应用来改进工作流。{% ifversion fpt or ghec %}也可以在 [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace) 中分享或销售应用。 若要了解如何在 {% data variables.product.prodname_marketplace %} 中上架应用,请参阅“[GitHub 市场入门](/marketplace/getting-started/)”。{% endif %} +{% data variables.product.prodname_dotcom %} 上的应用程序允许您自动化并改进工作流程。可以生成应用来改进工作流。{% ifversion fpt or ghec %}也可以在 [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace) 中分享或销售应用。若要了解如何在 {% data variables.product.prodname_marketplace %} 中上架应用,请参阅“[GitHub 市场入门](/marketplace/getting-started/)”。{% endif %} -{% data reusables.marketplace.github_apps_preferred %},但 GitHub 支持 {% data variables.product.prodname_oauth_apps %} 和 {% data variables.product.prodname_github_apps %}。 有关选择应用类型的信息,请参阅“[GitHub 应用与 OAuth 应用的区别](/developers/apps/differences-between-github-apps-and-oauth-apps)”。 +{% data reusables.marketplace.github_apps_preferred %},但 GitHub 支持 {% data variables.product.prodname_oauth_apps %} 和 {% data variables.product.prodname_github_apps %}。有关选择应用类型的信息,请参阅“[GitHub 应用与 OAuth 应用的区别](/developers/apps/differences-between-github-apps-and-oauth-apps)”。 {% data reusables.apps.general-apps-restrictions %} @@ -33,13 +33,13 @@ ms.locfileid: '145085040' {% data variables.product.prodname_github_apps %} 是 GitHub 中的一流产品。 {% data variables.product.prodname_github_app %} 应用程序以自己的名义运行,通过 API 直接使用自己的身份进行操作,这意味着您无需作为独立用户维护自动程序或服务帐户。 -{% data variables.product.prodname_github_apps %} 可以直接安装在组织和个人帐户上,并获得对特定仓库的访问权限。 它们拥有内置 web 挂钩和狭窄的特定权限。 设置 {% data variables.product.prodname_github_app %}时,可以选择希望它访问的仓库。 例如,可以设置一个名为在存储库中`MyGitHub`写入问题且`octocat`仅 _写入_ 存储库的应用`octocat`。 要安装 {% data variables.product.prodname_github_app %},您必须是组织所有者或在仓库中具有管理员权限。 +{% data variables.product.prodname_github_apps %} 可以直接安装在组织和个人帐户上,并获得对特定仓库的访问权限。它们拥有内置 web 挂钩和狭窄的特定权限。设置 {% data variables.product.prodname_github_app %}时,可以选择希望它访问的仓库。例如,可以设置一个名为在存储库中`MyGitHub`写入问题且`octocat`仅 _写入_ 存储库的应用`octocat`。要安装 {% data variables.product.prodname_github_app %},您必须是组织所有者或在仓库中具有管理员权限。 {% data reusables.apps.app_manager_role %} -{% data variables.product.prodname_github_apps %} 是需要托管在某处的应用程序。 有关涵盖服务器和托管的分步说明,请参阅“[生成第一个 {% data variables.product.prodname_github_app %}](/apps/building-your-first-github-app)”。 +{% data variables.product.prodname_github_apps %} 是需要托管在某处的应用程序。有关涵盖服务器和托管的分步说明,请参阅“[生成第一个 {% data variables.product.prodname_github_app %}](/apps/building-your-first-github-app)”。 -要改进自己的工作流程,可以创建一个包含多个脚本或整个应用程序的 {% data variables.product.prodname_github_app %},然后将此应用程序连接至许多其他工具。 例如,您可以将 {% data variables.product.prodname_github_apps %} 连接至 GitHub、Slack、自己可能拥有的其他内部应用程序、电子邮件程序或其他 API。 +要改进自己的工作流程,可以创建一个包含多个脚本或整个应用程序的 {% data variables.product.prodname_github_app %},然后将此应用程序连接至许多其他工具。例如,您可以将 {% data variables.product.prodname_github_apps %} 连接至 GitHub、Slack、自己可能拥有的其他内部应用程序、电子邮件程序或其他 API。 创建 {% data variables.product.prodname_github_apps %} 时,请记住以下方法: @@ -50,7 +50,7 @@ ms.locfileid: '145085040' * 请确保 {% data variables.product.prodname_github_app %} 与特定仓库集成。 * {% data variables.product.prodname_github_app %} 应该连接到个人帐户或组织。 * 不要指望 {% data variables.product.prodname_github_app %} 知道并尽其所能。 -* 如果您只需要“使用GitHub登录”服务,请不要使用 {% data variables.product.prodname_github_app %}。 但是 {% data variables.product.prodname_github_app %} 可以使用[用户标识流](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)让用户登录和执行其他操作。 +* 如果您只需要“使用 GitHub 登录”服务,请不要使用 {% data variables.product.prodname_github_app %}。但是 {% data variables.product.prodname_github_app %} 可以使用[用户标识流](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)让用户登录和执行其他操作。 * 如果只想充当 GitHub 用户并执行用户所能执行的所有操作,请不要生成 {% data variables.product.prodname_github_app %}。{% ifversion fpt or ghec %} * {% data reusables.apps.general-apps-restrictions %}{% endif %} @@ -58,13 +58,13 @@ ms.locfileid: '145085040' ## 关于 {% data variables.product.prodname_oauth_apps %} -OAuth2 是一种协议,它允许外部应用程序请求授权在不使用密码的情况下访问用户 {% data variables.product.prodname_dotcom %} 帐户中的私有信息。 此协议优先于基本验证,因为令牌可能仅限于特定类型的数据,用户可以随时撤销。 +OAuth2 是一种协议,它允许外部应用程序请求授权在不使用密码的情况下访问用户 {% data variables.product.prodname_dotcom %} 帐户中的私有信息。此协议优先于基本验证,因为令牌可能仅限于特定类型的数据,用户可以随时撤销。 {% data reusables.apps.deletes_ssh_keys %} -{% data variables.product.prodname_oauth_app %} 使用 {% data variables.product.prodname_dotcom %} 作为身份提供程序以验证为授予应用程序访问权限的用户。 这意味着,当用户授予 {% data variables.product.prodname_oauth_app %} 访问权限时,将授权访问其帐户有权访问的所有存储库,以及他们所属的、未阻止第三方访问的任何组织。 +{% data variables.product.prodname_oauth_app %} 使用 {% data variables.product.prodname_dotcom %} 作为身份提供程序以验证为授予应用程序访问权限的用户。这意味着,当用户授予 {% data variables.product.prodname_oauth_app %} 访问权限时,将授权访问其帐户有权访问的所有存储库,以及他们所属的、未阻止第三方访问的任何组织。 -如果要创建比简单脚本的处理范围更复杂的流程,构建 {% data variables.product.prodname_oauth_app %} 是一个很好的选择。 请注意,{% data variables.product.prodname_oauth_apps %} 是需要托管在某处的应用程序。 +如果要创建比简单脚本的处理范围更复杂的流程,构建 {% data variables.product.prodname_oauth_app %} 是一个很好的选择。请注意,{% data variables.product.prodname_oauth_apps %} 是需要托管在某处的应用程序。 创建 {% data variables.product.prodname_oauth_apps %} 时,请记住以下几点: @@ -72,7 +72,7 @@ OAuth2 是一种协议,它允许外部应用程序请求授权在不使用密 * {% data reusables.apps.maximum-oauth-apps-allowed %} {% endif %} * {% data variables.product.prodname_oauth_app %} 在所有 {% data variables.product.prodname_dotcom %} 中(例如,在提供用户通知时)应始终代表经身份验证的 {% data variables.product.prodname_dotcom %} 用户。 * 通过为经身份验证的用户启用“使用 {% data variables.product.prodname_dotcom %} 进行登录”,{% data variables.product.prodname_oauth_app %} 可用作身份提供程序。 -* 如果您希望应用程序作用于单个仓库,请不要构建 {% data variables.product.prodname_oauth_app %}。 使用 `repo` OAuth 作用域,{% data variables.product.prodname_oauth_apps %} 可以作用于经身份验证用户的所有存储库。 +* 如果您希望应用程序作用于单个仓库,请不要构建 {% data variables.product.prodname_oauth_app %}。使用 `repo` OAuth 作用域,{% data variables.product.prodname_oauth_apps %} 可以作用于经身份验证用户的所有存储库。 * 不要构建 {% data variables.product.prodname_oauth_app %} 作为团队或公司的应用程序。 {% data variables.product.prodname_oauth_apps %} 将验证为单个用户,因此,如果有人创建了 {% data variables.product.prodname_oauth_app %} 供公司使用,那么一旦他们离开公司,其他人将无法访问它。{% ifversion fpt or ghec %} * {% data reusables.apps.oauth-apps-restrictions %}{% endif %} @@ -80,9 +80,9 @@ OAuth2 是一种协议,它允许外部应用程序请求授权在不使用密 ## 个人访问令牌 -[个人访问令牌](/articles/creating-a-personal-access-token-for-the-command-line/)是一个字符串,其功能类似于 [OAuth 令牌](/apps/building-oauth-apps/authorizing-oauth-apps/),可以通过[作用域](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)指定其权限。 个人访问令牌还与密码类似,但您能拥有很多令牌,而且可以随时撤销对每个令牌的访问权限。 +[个人访问令牌](/articles/creating-a-personal-access-token-for-the-command-line/)是一个字符串,其功能类似于 [OAuth 令牌](/apps/building-oauth-apps/authorizing-oauth-apps/),可以通过[作用域](/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/)指定其权限。个人访问令牌还与密码类似,但您能拥有很多令牌,而且可以随时撤销对每个令牌的访问权限。 -例如,您可以启用个人访问令牌,以写入仓库。 如果随后运行 cURL 命令或编写在存储库中[创建问题](/rest/reference/issues#create-an-issue)的脚本,则需要传递个人访问令牌以进行身份验证。 您可以将个人访问令牌存储为环境变量,以免每次使用时都要输入。 +例如,您可以启用个人访问令牌,以写入仓库。如果随后运行 cURL 命令或编写在存储库中[创建问题](/rest/reference/issues#create-an-issue)的脚本,则需要传递个人访问令牌以进行身份验证。您可以将个人访问令牌存储为环境变量,以免每次使用时都要输入。 使用个人访问令牌时,请牢记以下几点: @@ -95,7 +95,7 @@ OAuth2 是一种协议,它允许外部应用程序请求授权在不使用密 ## 确定要构建的集成 -在开始创建集成之前,您需要确定使用 {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.product.product_name %}{% endif %} API 访问、验证和交互的最佳方式。 下图提供了一些问题,您在决定是否对集成使用个人访问令牌、{% data variables.product.prodname_github_apps %} 或 {% data variables.product.prodname_oauth_apps %} 时可以考虑这些问题。 +在开始创建集成之前,您需要确定使用 {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.product.product_name %}{% endif %} API 访问、验证和交互的最佳方式。下图提供了一些问题,您在决定是否对集成使用个人访问令牌、{% data variables.product.prodname_github_apps %} 或 {% data variables.product.prodname_oauth_apps %} 时可以考虑这些问题。 ![应用程序问题流程简介](/assets/images/intro-to-apps-flow.png) @@ -104,7 +104,7 @@ OAuth2 是一种协议,它允许外部应用程序请求授权在不使用密 * 我的集成是只像我一样,还是更像一个应用程序? * 我是否希望它作为单独的实体独立于我运行? * 它是否能访问我可以访问的一切,或者说我想限制它的访问权限? -* 它是简单还是复杂? 例如,个人访问令牌对简单的脚本和 cURL 有益,而 {% data variables.product.prodname_oauth_app %} 可以处理更复杂的脚本。 +* 它是简单还是复杂?例如,个人访问令牌对简单的脚本和 cURL 有益,而 {% data variables.product.prodname_oauth_app %} 可以处理更复杂的脚本。 ## 请求支持 diff --git a/translations/zh-CN/content/developers/apps/getting-started-with-apps/differences-between-github-apps-and-oauth-apps.md b/translations/zh-CN/content/developers/apps/getting-started-with-apps/differences-between-github-apps-and-oauth-apps.md index 3f1000dcef27..959e1b5b6568 100644 --- a/translations/zh-CN/content/developers/apps/getting-started-with-apps/differences-between-github-apps-and-oauth-apps.md +++ b/translations/zh-CN/content/developers/apps/getting-started-with-apps/differences-between-github-apps-and-oauth-apps.md @@ -1,6 +1,6 @@ --- title: GitHub 应用和 OAuth 应用之间的差异 -intro: '了解 {% data variables.product.prodname_github_apps %} 和 {% data variables.product.prodname_oauth_apps %} 之间的差异可帮助您决定要创建哪个应用程序。 在组织或组织内的仓库上安装时,{% data variables.product.prodname_oauth_app %} 代表 GitHub 用户,而 {% data variables.product.prodname_github_app %} 使用它自己的身份。' +intro: '了解 {% data variables.product.prodname_github_apps %} 和 {% data variables.product.prodname_oauth_apps %} 之间的差异可帮助您决定要创建哪个应用程序。在组织或组织内的仓库上安装时,{% data variables.product.prodname_oauth_app %} 代表 GitHub 用户,而 {% data variables.product.prodname_github_app %} 使用它自己的身份。' redirect_from: - /early-access/integrations/integrations-vs-oauth-applications - /apps/building-integrations/setting-up-a-new-integration/about-choosing-an-integration-type @@ -24,41 +24,41 @@ ms.locfileid: '146058490' --- ## 谁可以安装 GitHub 应用程序并授权 OAuth 应用程序? -您可以在您的个人帐户或您拥有的组织中安装 GitHub 应用程序。 如果拥有仓库管理员权限,您可以在组织帐户上安装 GitHub 应用程序。 如果 GitHub 应用程序安装在仓库中,并且需要组织权限,则组织所有者必须批准该应用程序。 +您可以在您的个人帐户或您拥有的组织中安装 GitHub 应用程序。如果拥有仓库管理员权限,您可以在组织帐户上安装 GitHub 应用程序。如果 GitHub 应用程序安装在仓库中,并且需要组织权限,则组织所有者必须批准该应用程序。 {% data reusables.apps.app_manager_role %} -相比之下,用户向 OAuth 应用授权,使应用能够以经过身份验证的用户身份执行操作。 例如,您可以授权 OAuth 应用程序查找经身份验证用户的所有通知。 您可以随时撤销 OAuth 应用程序的权限。 +相比之下,用户向 OAuth 应用授权,使应用能够以经过身份验证的用户身份执行操作。例如,您可以授权 OAuth 应用程序查找经身份验证用户的所有通知。您可以随时撤销 OAuth 应用程序的权限。 {% data reusables.apps.deletes_ssh_keys %} | GitHub 应用 | OAuth 应用 | | ----- | ------ | -| 您必须是组织所有者或者具有仓库管理员权限才能在组织上安装 GitHub 应用程序。 如果 GitHub 应用程序安装在仓库中,并且需要组织权限,则组织所有者必须批准该应用程序。 | 您可以授权 OAuth 应用程序访问资源。 | +| 您必须是组织所有者或者具有仓库管理员权限才能在组织上安装 GitHub 应用程序。如果 GitHub 应用程序安装在仓库中,并且需要组织权限,则组织所有者必须批准该应用程序。 | 您可以授权 OAuth 应用程序访问资源。 | | 您可以在个人仓库上安装 GitHub 应用程序。 | 您可以授权 OAuth 应用程序访问资源。| | 您必须是组织所有者、个人仓库所有者或者拥有仓库的管理员权限才能卸载 GitHub 应用程序和删除其访问权限。 | 您可以删除 OAuth 访问令牌以删除访问权限。 | -| 您必须是组织所有者或者具有仓库管理员权限才能请求安装 GitHub 应用程序。 | 如果组织应用程序策略已激活,则任何组织成员都可以请求在组织上安装 OAuth 应用程序。 组织所有者必须批准或拒绝请求。 | +| 您必须是组织所有者或者具有仓库管理员权限才能请求安装 GitHub 应用程序。 | 如果组织应用程序策略已激活,则任何组织成员都可以请求在组织上安装 OAuth 应用程序。组织所有者必须批准或拒绝请求。 | ## GitHub 应用程序和 OAuth 应用程序可以访问什么? -帐户所有者可以在一个帐户中使用 {% data variables.product.prodname_github_app %} ,而不授予对其他帐户的访问权限。 例如,您可以在您的雇主组织中安装第三方构建服务,但决定不授权该构建服务访问您个人帐户中的仓库。 即使安装者离开组织,GitHub 应用程序仍然存在。 +帐户所有者可以在一个帐户中使用 {% data variables.product.prodname_github_app %} ,而不授予对其他帐户的访问权限。例如,您可以在您的雇主组织中安装第三方构建服务,但决定不授权该构建服务访问您个人帐户中的仓库。即使安装者离开组织,GitHub 应用程序仍然存在。 授权的 OAuth 应用程序有权访问用户或组织所有者可访问的所有资源。 | GitHub 应用 | OAuth 应用 | | ----- | ------ | -| 安装 GitHub 应用会授予应用对用户或组织帐户所选存储库的访问权限。 | 为 OAuth 应用授权会授予应用访问用户可访问资源的权限。 例如,它们可以访问的存储库。 | +| 安装 GitHub 应用会授予应用对用户或组织帐户所选存储库的访问权限。 | 为 OAuth 应用授权会授予应用访问用户可访问资源的权限。例如,它们可以访问的存储库。 | | 如果管理员从安装中删除仓库,则 GitHub 应用程序的安装令牌将失去对资源的访问权限。 | 当用户失去对资源的访问权限时,例如失去对仓库的写入权限,OAuth 访问令牌也会失去相应的访问权限。 | | 安装访问令牌仅限于具有应用创建者所选权限的指定存储库。 | OAuth 访问令牌通过作用域进行限制。 | | GitHub Apps 可以请求单独访问议题和拉取请求,而不访问仓库的实际内容。 | OAuth 应用需要请求 `repo` 范围才能访问问题、拉取请求或存储库拥有的任何内容。 | -| GitHub 应用不受组织应用程序策略约束。 GitHub 应用仅有权访问组织所有者已授予的存储库。 | 如果组织应用程序策略处于活动状态,则只有组织所有者才能授权安装 OAuth 应用。 如果已安装,OAuth 应用可以访问组织所有者在批准的组织中拥有的令牌可见的任何内容。 | -| 当安装被更改或删除时,GitHub 应用程序会收到 web 挂钩事件。 当它们对组织资源的访问权限扩大或缩小时,这将告诉应用程序创建者。 | 根据授予用户访问权限的变化,OAuth 应用程序可能会随时失去对组织或仓库的访问权限。 OAuth 应用程序在失去对资源的访问权限时不会通知您。 | +| GitHub 应用不受组织应用程序策略约束。GitHub 应用仅有权访问组织所有者已授予的存储库。 | 如果组织应用程序策略处于活动状态,则只有组织所有者才能授权安装 OAuth 应用。如果已安装,OAuth 应用可以访问组织所有者在批准的组织中拥有的令牌可见的任何内容。 | +| 当安装被更改或删除时,GitHub 应用程序会收到 web 挂钩事件。当它们对组织资源的访问权限扩大或缩小时,这将告诉应用程序创建者。 | 根据授予用户访问权限的变化,OAuth 应用程序可能会随时失去对组织或仓库的访问权限。OAuth 应用程序在失去对资源的访问权限时不会通知您。 | ## 基于令牌的识别 {% note %} -注意:GitHub 应用也可以使用基于用户的令牌。 有关详细信息,请参阅“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 +注意:GitHub 应用也可以使用基于用户的令牌。有关详细信息,请参阅“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 {% endnote %} @@ -67,13 +67,13 @@ ms.locfileid: '146058490' | GitHub 应用可以使用带外 JSON Web 令牌格式的私钥请求安装访问令牌。 | OAuth 应用程序可以通过 Web 请求在重定向后将请求令牌交换为访问令牌。 | | 安装令牌将应用标识为 GitHub 应用机器人,例如 @jenkins-bot。 | 访问令牌将应用标识为向应用授予令牌的用户,例如 @octocat。 | | 安装令牌在预定义的时间(当前为 1 小时)后过期。 | OAuth 令牌在被客户撤销之前一直保持活动状态。 | -| 安装在组织或仓库上的 {% data variables.product.prodname_github_apps %} 受服务器到服务器请求的速率限制。 有关详细信息,请参阅“[{% data variables.product.prodname_github_apps %} 的速率限制](/developers/apps/building-github-apps/rate-limits-for-github-apps)”。 | OAuth 令牌使用用户的速率限制,即每小时 {% ifversion fpt or ghec or ghes %}5,000{% elsif ghae %}15,000{% endif %} 个请求。 | -| 可以在 GitHub 应用级别(影响所有安装)和单个安装级别授予速率限制增加。 | 针对每个 OAuth 应用授予速率限制增加。 授予该 OAuth 应用的每一个令牌都会获得增加的限制。 | -| {% data variables.product.prodname_github_apps %} 可以代表用户进行身份验证,这称为用户到服务器请求。 授权流与 OAuth 应用授权流相同。 用户到服务器令牌可能过期,可以使用刷新令牌进行续订。 有关详细信息,请参阅“[刷新用户到服务器访问令牌](/apps/building-github-apps/refreshing-user-to-server-access-tokens/)”和“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 | {% data variables.product.prodname_oauth_apps %} 使用的 OAuth 流程代表用户授权 {% data variables.product.prodname_oauth_app %}。 这与用于 {% data variables.product.prodname_github_app %} 用户到服务器授权中使用的流程相同。 | +| 安装在组织或仓库上的 {% data variables.product.prodname_github_apps %} 受服务器到服务器请求的速率限制。有关详细信息,请参阅“[{% data variables.product.prodname_github_apps %} 的速率限制](/developers/apps/building-github-apps/rate-limits-for-github-apps)”。 | OAuth 令牌使用用户的速率限制,即每小时 {% ifversion fpt or ghec or ghes %}5,000{% elsif ghae %}15,000{% endif %} 个请求。 | +| 可以在 GitHub 应用级别(影响所有安装)和单个安装级别授予速率限制增加。 | 针对每个 OAuth 应用授予速率限制增加。授予该 OAuth 应用的每一个令牌都会获得增加的限制。 | +| {% data variables.product.prodname_github_apps %} 可以代表用户进行身份验证,这称为用户到服务器请求。授权流与 OAuth 应用授权流相同。用户到服务器令牌可能过期,可以使用刷新令牌进行续订。有关详细信息,请参阅“[刷新用户到服务器访问令牌](/apps/building-github-apps/refreshing-user-to-server-access-tokens/)”和“[标识和授权 GitHub 应用用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 | {% data variables.product.prodname_oauth_apps %} 使用的 OAuth 流程代表用户授权 {% data variables.product.prodname_oauth_app %}。这与用于 {% data variables.product.prodname_github_app %} 用户到服务器授权中使用的流程相同。 | ## 请求资源的权限级别 -与 OAuth 应用程序不同,GitHub 应用程序具有针对性的权限,只允许它们请求访问所需的资源。 例如,持续集成 (CI) GitHub 应用程序可以请求对仓库内容的读取权限和对状态 API 的写入权限。 另一个 GitHub 应用程序可能没有对代码的读取或写入权限,但仍能管理议题、标签和里程碑。 OAuth 应用无法使用精细权限。 +与 OAuth 应用程序不同,GitHub 应用程序具有针对性的权限,只允许它们请求访问所需的资源。例如,持续集成 (CI) GitHub 应用程序可以请求对仓库内容的读取权限和对状态 API 的写入权限。另一个 GitHub 应用程序可能没有对代码的读取或写入权限,但仍能管理议题、标签和里程碑。OAuth 应用无法使用精细权限。 | Access | GitHub 应用(`read` 或 `write` 权限) | OAuth 应用 | | ------ | ----- | ----------- | @@ -98,13 +98,13 @@ ms.locfileid: '146058490' | ----- | ----------- | | 默认情况下,GitHub 应用程序有一个 web 挂钩,可根据配置接收它们有权访问的每个仓库中的事件。 | OAuth 应用程序请求 web 挂钩作用域为它们需要接收其事件的每个仓库创建仓库 web 挂钩。 | | GitHub 应用程序使用组织成员的权限接收某些组织级别的事件。 | OAuth 应用程序请求组织 web 挂钩作用域为它们需要接收其组织级别事件的每个组织创建组织 web 挂钩。 | -| 卸载 GitHub 应用时,会自动禁用 Webhook。 | 如果删除 OAuth 应用的访问令牌,则不会自动禁用 Webhook,并且无法自动清理它们。 必须要求用户手动执行此操作。| +| 卸载 GitHub 应用时,会自动禁用 Webhook。 | 如果删除 OAuth 应用的访问令牌,则不会自动禁用 Webhook,并且无法自动清理它们。必须要求用户手动执行此操作。| ## Git 访问 | GitHub 应用 | OAuth 应用 | | ----- | ----------- | -| GitHub 应用请求存储库内容权限,并使用安装令牌通过[基于 HTTP 的 Git](/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation) 进行身份验证。 | OAuth 应用请求 `write:public_key` 作用域,并通过 API [创建部署密钥](/rest/reference/deployments#create-a-deploy-key)。 然后,可以使用该密钥执行 Git 命令。 | +| GitHub 应用请求存储库内容权限,并使用安装令牌通过[基于 HTTP 的 Git](/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation) 进行身份验证。 | OAuth 应用请求 `write:public_key` 作用域,并通过 API [创建部署密钥](/rest/reference/deployments#create-a-deploy-key)。然后,可以使用该密钥执行 Git 命令。 | | 令牌用作 HTTP 密码。 | 令牌用作 HTTP 用户名。 | ## 机器与机器人帐户 diff --git a/translations/zh-CN/content/developers/apps/getting-started-with-apps/migrating-oauth-apps-to-github-apps.md b/translations/zh-CN/content/developers/apps/getting-started-with-apps/migrating-oauth-apps-to-github-apps.md index 05b75ee7a244..56896ac76865 100644 --- a/translations/zh-CN/content/developers/apps/getting-started-with-apps/migrating-oauth-apps-to-github-apps.md +++ b/translations/zh-CN/content/developers/apps/getting-started-with-apps/migrating-oauth-apps-to-github-apps.md @@ -26,18 +26,18 @@ ms.locfileid: '147081030' [GitHub 应用](/apps/) 是官方推荐的与 GitHub 集成的方式,因为与纯基于 OAuth 的集成相比,它们提供了许多优势: - [细化权限](/apps/differences-between-apps/#requesting-permission-levels-for-resources)针对 GitHub 应用可以访问的特定信息,与不受权限限制的 OAuth 应用相比,允许具有安全策略的个人和组织更广泛地使用应用。 -- [短期令牌](/apps/differences-between-apps/#token-based-identification)提供比 OAuth 令牌更安全的身份验证方法。 在授权 OAuth 应用程序的人撤销令牌之前,OAuth 令牌不会过期。 GitHub 应用程序使用快速过期的令牌,将受损令牌的使用限制到更小的时限。 -- [内置集中式 Webhook](/apps/differences-between-apps/#webhooks) 接收应用可以访问的所有存储库和组织的事件。 相反,OAuth 应用程序需要为用户可访问的每个仓库和组织配置一个 web 挂钩。 +- [短期令牌](/apps/differences-between-apps/#token-based-identification)提供比 OAuth 令牌更安全的身份验证方法。在授权 OAuth 应用程序的人撤销令牌之前,OAuth 令牌不会过期。GitHub 应用程序使用快速过期的令牌,将受损令牌的使用限制到更小的时限。 +- [内置集中式 Webhook](/apps/differences-between-apps/#webhooks) 接收应用可以访问的所有存储库和组织的事件。相反,OAuth 应用程序需要为用户可访问的每个仓库和组织配置一个 web 挂钩。 - [机器人帐户](/apps/differences-between-apps/#machine-vs-bot-accounts)不会占用 {% data variables.product.product_name %} 席位,即使最初安装应用的人离开组织时也会保持安装状态。 - 使用[用户到服务器终结点](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)的 GitHub 应用仍然可以使用对 OAuth 的内置支持。 - 机器人帐户的专用 [API 速率限制](/apps/building-github-apps/understanding-rate-limits-for-github-apps/)随集成缩放。 -- 存储库所有者可以在组织存储库上[安装 GitHub 应用](/apps/differences-between-apps/#who-can-install-github-apps-and-authorize-oauth-apps)。 如果 GitHub 应用程序的配置具有请求组织资源的权限,则组织所有者必须批准安装。 +- 存储库所有者可以在组织存储库上[安装 GitHub 应用](/apps/differences-between-apps/#who-can-install-github-apps-and-authorize-oauth-apps)。如果 GitHub 应用程序的配置具有请求组织资源的权限,则组织所有者必须批准安装。 - 可通过 [Octokit 库](/rest/overview/libraries) 和其他框架(如 [Probot](https://probot.github.io/))获得开源社区支持。 - 构建 GitHub 应用程序的集成者有机会采用较早的 API 访问方式。 ## 将 OAuth 应用程序转换为 GitHub 应用程序 -这些指南假定你有一个注册的 OAuth 应用 {% ifversion fpt or ghec %},它可能在 GitHub Marketplace 中上架,也可能没有上架{% endif %}。 在较高级别,您需要执行以下步骤: +这些指南假定你有一个注册的 OAuth 应用 {% ifversion fpt or ghec %},它可能在 GitHub Marketplace 中上架,也可能没有上架{% endif %}。在较高级别,您需要执行以下步骤: 1. [查看 GitHub 应用可用的 API 终结点](#review-the-available-api-endpoints-for-github-apps) 1. [设计保持在 API 速率限制内](#design-to-stay-within-api-rate-limits) @@ -52,13 +52,13 @@ ms.locfileid: '147081030' ### 查看 GitHub 应用程序可用的 API 端点 -虽然目前大部分 [REST API](/rest) 终结点和 [GraphQL](/graphql) 查询都可用于 GitHub 应用,但我们仍在启用更多终结点。 查看[可用的 REST 终结点](/rest/overview/endpoints-available-for-github-apps),以确保所需的终结点与 GitHub 应用兼容。 请注意,为 GitHub 应用程序启用的某些 API 端点允许应用程序代表用户执行操作。 有关允许 GitHub 应用以用户身份进行身份验证的终结点列表,请参阅“[用户到服务器请求](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#user-to-server-requests)”。 +虽然目前大部分 [REST API](/rest) 终结点和 [GraphQL](/graphql) 查询都可用于 GitHub 应用,但我们仍在启用更多终结点。查看[可用的 REST 终结点](/rest/overview/endpoints-available-for-github-apps),以确保所需的终结点与 GitHub 应用兼容。请注意,为 GitHub 应用程序启用的某些 API 端点允许应用程序代表用户执行操作。有关允许 GitHub 应用以用户身份进行身份验证的终结点列表,请参阅“[用户到服务器请求](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#user-to-server-requests)”。 -我们建议您尽早查看所需的 API 端点列表。 如果尚未为 {% data variables.product.prodname_github_apps %} 启用您需要的端点,请告知支持人员。 +我们建议您尽早查看所需的 API 端点列表。如果尚未为 {% data variables.product.prodname_github_apps %} 启用您需要的端点,请告知支持人员。 ### 设计保持在 API 速率限制内 -GitHub 应用使用[滑动速率限制规则](/apps/building-github-apps/understanding-rate-limits-for-github-apps/),可以根据组织中的存储库和用户数增加速率上限。 GitHub 应用还可以利用[条件请求](/rest/overview/resources-in-the-rest-api#conditional-requests)或通过使用 [GraphQL API](/graphql) 合并请求。 +GitHub 应用使用[滑动速率限制规则](/apps/building-github-apps/understanding-rate-limits-for-github-apps/),可以根据组织中的存储库和用户数增加速率上限。GitHub 应用还可以利用[条件请求](/rest/overview/resources-in-the-rest-api#conditional-requests)或通过使用 [GraphQL API](/graphql) 合并请求。 ### 注册新的 GitHub 应用程序 @@ -66,50 +66,50 @@ GitHub 应用使用[滑动速率限制规则](/apps/building-github-apps/underst ### 确定应用程序所需的权限 -注册 GitHub 应用程序时,您需要选择应用程序代码中使用的每个端点所需的权限。 有关 GitHub 应用可用的每个终结点所需的权限列表,请参阅“[GitHub 应用权限](/rest/reference/permissions-required-for-github-apps)”。 +注册 GitHub 应用程序时,您需要选择应用程序代码中使用的每个端点所需的权限。有关 GitHub 应用可用的每个终结点所需的权限列表,请参阅“[GitHub 应用权限](/rest/reference/permissions-required-for-github-apps)”。 -在 GitHub 应用的设置中,可以针对每种权限类型指定应用是否需要 `No Access`、`Read-only` 或 `Read & Write` 访问权限。 精细权限允许您的应用程序获得有针对性的权限以访问您需要的数据子集。 我们建议指定能够提供所需功能的最小权限集。 +在 GitHub 应用的设置中,可以针对每种权限类型指定应用是否需要 `No Access`、`Read-only` 或 `Read & Write` 访问权限。精细权限允许您的应用程序获得有针对性的权限以访问您需要的数据子集。我们建议指定能够提供所需功能的最小权限集。 ### 订阅 web 挂钩 -创建新的 GitHub 应用程序并选择其权限后,您可以选择要它订阅的 web 挂钩事件。 请参阅“[编辑 GitHub 应用的权限](/apps/managing-github-apps/editing-a-github-app-s-permissions/)”,了解如何订阅 Webhook。 +创建新的 GitHub 应用程序并选择其权限后,您可以选择要它订阅的 web 挂钩事件。请参阅“[编辑 GitHub 应用的权限](/apps/managing-github-apps/editing-a-github-app-s-permissions/)”,了解如何订阅 Webhook。 ### 了解不同的身份验证方法 -GitHub 应用程序主要使用在短时间后过期的基于令牌的身份验证,比不会过期的 OAuth 令牌更安全。 了解您可以使用的不同身份验证方法以及您何时需要使用它们,这非常重要: +GitHub 应用程序主要使用在短时间后过期的基于令牌的身份验证,比不会过期的 OAuth 令牌更安全。了解您可以使用的不同身份验证方法以及您何时需要使用它们,这非常重要: -* JSON Web 令牌 (JWT) [作为 GitHub 应用进行身份验证](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app)。 例如,可以使用 JWT 进行身份验证以提取应用程序安装详细信息,或交换 JWT 以获取安装访问令牌 。 -* 安装访问令牌[验证为 GitHub 应用的特定安装](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)(也称为服务器到服务器请求)。 例如,你可以使用安装访问令牌进行身份验证,以打开问题或提供有关拉取请求的反馈。 -* OAuth 访问令牌可以[验证为 GitHub 应用的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site)(也称为用户到服务器请求)。 例如, 当 GitHub 应用程序需要验证用户身份或代表用户执行操作时,您可以使用 OAuth 访问令牌验证为用户。 +* JSON Web 令牌 (JWT) [作为 GitHub 应用进行身份验证](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app)。例如,可以使用 JWT 进行身份验证以提取应用程序安装详细信息,或交换 JWT 以获取安装访问令牌。 +* 安装访问令牌[验证为 GitHub 应用的特定安装](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)(也称为服务器到服务器请求)。例如,你可以使用安装访问令牌进行身份验证,以打开问题或提供有关拉取请求的反馈。 +* OAuth 访问令牌可以[验证为 GitHub 应用的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site)(也称为用户到服务器请求)。例如,当 GitHub 应用程序需要验证用户身份或代表用户执行操作时,您可以使用 OAuth 访问令牌验证为用户。 最常见的情况是使用安装访问令牌验证为特定安装。 ### 指导用户在仓库中安装您的 GitHub 应用程序 -从 OAuth 应用程序过渡到 GitHub 应用程序后,您需要让用户知道 GitHub 应用程序可供安装。 例如,您可以在应用程序内的呼吁横幅中添加 GitHub 应用程序的安装链接。 为了简化过渡,您可以使用查询参数来识别将要完成 GitHub 应用程序安装流程的用户或组织帐户,并预先选择 OAuth 应用程序可以访问的任何仓库。 这使用户可以轻松地在您有权访问的仓库上安装 GitHub 应用程序。 +从 OAuth 应用程序过渡到 GitHub 应用程序后,您需要让用户知道 GitHub 应用程序可供安装。例如,您可以在应用程序内的呼吁横幅中添加 GitHub 应用程序的安装链接。为了简化过渡,您可以使用查询参数来识别将要完成 GitHub 应用程序安装流程的用户或组织帐户,并预先选择 OAuth 应用程序可以访问的任何仓库。这使用户可以轻松地在您有权访问的仓库上安装 GitHub 应用程序。 #### 查询参数 | 名称 | 说明 | |------|-------------| | `suggested_target_id` | 必需:安装 GitHub 应用的用户或组织的 ID。 | -| `repository_ids[]` | 仓库 ID 的数组。 如果省略,我们将选择所有仓库。 可以预先选择的仓库最大数量为 100。 | +| `repository_ids[]` | 仓库 ID 的数组。如果省略,我们将选择所有仓库。可以预先选择的仓库最大数量为 100。 | #### 示例 URL ``` https://github.com/apps/YOUR_APP_NAME/installations/new/permissions?suggested_target_id=ID_OF_USER_OR_ORG&repository_ids[]=REPO_A_ID&repository_ids[]=REPO_B_ID ``` -你需要将 `YOUR_APP_NAME` 替换为 GitHub 应用的名称,将 `ID_OF_USER_OR_ORG` 替换为目标用户或组织的 ID,并包含最多 100 个存储库 ID(`REPO_A_ID` 和 `REPO_B_ID`)。 要获取 OAuth 应用有权访问的存储库列表,请使用[列出已验证用户的存储库](/rest/reference/repos#list-repositories-for-the-authenticated-user)和[列出组织存储库](/rest/reference/repos#list-organization-repositories)终结点。 +你需要将 `YOUR_APP_NAME` 替换为 GitHub 应用的名称,将 `ID_OF_USER_OR_ORG` 替换为目标用户或组织的 ID,并包含最多 100 个存储库 ID(`REPO_A_ID` 和 `REPO_B_ID`)。要获取 OAuth 应用有权访问的存储库列表,请使用[列出已验证用户的存储库](/rest/reference/repos#list-repositories-for-the-authenticated-user)和[列出组织存储库](/rest/reference/repos#list-organization-repositories)终结点。 ### 删除任何不必要的仓库挂钩 -在仓库中安装 GitHub 应用程序后,应删除由原有 OAuth 应用程序创建的任何不必要的 web 挂钩。 如果两个应用程序都安装在仓库中,它们可能会为用户重复执行功能。 要删除 Webhook,可以使用 `repositories_added` 操作侦听 [`installation_repositories` Webhook](/webhooks/event-payloads/#installation_repositories),并在 OAuth 应用创建的那些存储库上[删除存储库 Webhook](/rest/reference/webhooks#delete-a-repository-webhook)。 +在仓库中安装 GitHub 应用程序后,应删除由原有 OAuth 应用程序创建的任何不必要的 web 挂钩。如果两个应用程序都安装在仓库中,它们可能会为用户重复执行功能。要删除 Webhook,可以使用 `repositories_added` 操作侦听 [`installation_repositories` Webhook](/webhooks/event-payloads/#installation_repositories),并在 OAuth 应用创建的那些存储库上[删除存储库 Webhook](/rest/reference/webhooks#delete-a-repository-webhook)。 ### 鼓励用户撤销 OAuth 应用程序的访问权限 -随着 GitHub 应用程序安装基础的增长,请考虑鼓励用户撤销原有 OAuth 集成的访问权限。 有关详细信息,请参阅“[授权 OAuth 应用](/github/authenticating-to-github/keeping-your-account-and-data-secure/authorizing-oauth-apps)”。 +随着 GitHub 应用程序安装基础的增长,请考虑鼓励用户撤销原有 OAuth 集成的访问权限。有关详细信息,请参阅“[授权 OAuth 应用](/github/authenticating-to-github/keeping-your-account-and-data-secure/authorizing-oauth-apps)”。 ### 删除 OAuth 应用程序 -为了避免滥用 OAuth 应用程序的凭据,请考虑删除 OAuth 应用程序。 此操作还将撤销 OAuth 应用程序的所有剩余授权。 有关详细信息,请参阅“[删除 OAuth 应用](/developers/apps/managing-oauth-apps/deleting-an-oauth-app)”。 +为了避免滥用 OAuth 应用程序的凭据,请考虑删除 OAuth 应用程序。此操作还将撤销 OAuth 应用程序的所有剩余授权。有关详细信息,请参阅“[删除 OAuth 应用](/developers/apps/managing-oauth-apps/deleting-an-oauth-app)”。 diff --git a/translations/zh-CN/content/developers/apps/getting-started-with-apps/setting-up-your-development-environment-to-create-a-github-app.md b/translations/zh-CN/content/developers/apps/getting-started-with-apps/setting-up-your-development-environment-to-create-a-github-app.md index 4e3a386479eb..2c34c626ede4 100644 --- a/translations/zh-CN/content/developers/apps/getting-started-with-apps/setting-up-your-development-environment-to-create-a-github-app.md +++ b/translations/zh-CN/content/developers/apps/getting-started-with-apps/setting-up-your-development-environment-to-create-a-github-app.md @@ -21,9 +21,9 @@ ms.locfileid: '145085031' --- ## 简介 -本指南将演练配置 GitHub 应用程序并在服务器上运行它所需的步骤。 GitHub 应用程序需要一些设置步骤来管理 web 挂钩事件并将 GitHub 上的应用程序注册连接到您的代码。 本指南中的应用程序可用作扩展和构建新 GitHub 应用程序的基础。 +本指南将演练配置 GitHub 应用程序并在服务器上运行它所需的步骤。GitHub 应用程序需要一些设置步骤来管理 web 挂钩事件并将 GitHub 上的应用程序注册连接到您的代码。本指南中的应用程序可用作扩展和构建新 GitHub 应用程序的基础。 -在本指南结束之前,您将注册 GitHub 应用程序并设置 web 服务器以接收 web 挂钩事件。 您将学习如何使用名为 Smee 的工具捕获 web 挂钩有效负载,并将它们转发到本地开发环境。 你将在本部分中配置的模板应用还没有进行任何特别的操作,但它将作为一个框架,你可以使用该框架开始使用 API 编写应用代码或完成其他[快速入门指南](/apps/quickstart-guides/)。 {% ifversion fpt or ghec %}可以在 [GitHub 市场](https://github.com/marketplace)中查看应用的成功示例,并[与 GitHub 配合使用](https://github.com/works-with)。{% endif %} +在本指南结束之前,您将注册 GitHub 应用程序并设置 web 服务器以接收 web 挂钩事件。您将学习如何使用名为 Smee 的工具捕获 web 挂钩有效负载,并将它们转发到本地开发环境。你将在本部分中配置的模板应用还没有进行任何特别的操作,但它将作为一个框架,你可以使用该框架开始使用 API 编写应用代码或完成其他[快速入门指南](/apps/quickstart-guides/)。 {% ifversion fpt or ghec %}可以在 [GitHub 市场](https://github.com/marketplace)中查看应用的成功示例,并[与 GitHub 配合使用](https://github.com/works-with)。{% endif %} 完成此项目后,您将了解如何验证为 GitHub 应用程序和安装设施,以及这些身份验证方法有何不同。 @@ -49,21 +49,21 @@ ms.locfileid: '145085031' * [REST API](/rest) * [Sinatra](http://sinatrarb.com/) -但是,任何经验水平都能跟上步伐。 我们会一路提供所需信息的链接。 +但是,任何经验水平都能跟上步伐。我们会一路提供所需信息的链接。 -在开始之前,您需要使用本快速入门中所用的模板代码克隆仓库。 打开您的终端应用程序并找到要存储代码的目录。 运行以下命令以克隆 [GitHub 应用模板](https://github.com/github-developer/github-app-template)存储库: +在开始之前,您需要使用本快速入门中所用的模板代码克隆仓库。打开您的终端应用程序并找到要存储代码的目录。运行以下命令以克隆 [GitHub 应用模板](https://github.com/github-developer/github-app-template)存储库: ```shell $ git clone https://github.com/github-developer/github-app-template.git ``` -## 步骤 1。 启动新的 Sme 通道 +## 步骤 1。启动新的 Sme 通道 -为了帮助 GitHub 将 web 挂钩发送到您的本地计算机而不将其暴露在互联网上,您可以使用一个名为 Smee 的工具。 首先,转到 https://smee.io 并单击“启动新通道”。 如果你已经熟悉向 Internet(例如 [`ngrok`](https://dashboard.ngrok.com/get-started) 或 [`localtunnel`](https://localtunnel.github.io/www/))公开本地计算机的其他工具,则可以随意使用这些工具。 +为了帮助 GitHub 将 web 挂钩发送到您的本地计算机而不将其暴露在互联网上,您可以使用一个名为 Smee 的工具。首先,转到 https://smee.io 并单击“启动新通道”。如果你已经熟悉向 Internet(例如 [`ngrok`](https://dashboard.ngrok.com/get-started) 或 [`localtunnel`](https://localtunnel.github.io/www/))公开本地计算机的其他工具,则可以随意使用这些工具。 ![Smee 新通道按钮](/assets/images/smee-new-channel.png) -启动一个新的 Smee 通道并创建一个唯一的域,供 GitHub 发送 web 挂钩有效负载。 下一步需要了解此域。 下面是 `https://smee.io/qrfeVRbFbffd6vD` 的唯一域示例: +启动一个新的 Smee 通道并创建一个唯一的域,供 GitHub 发送 web 挂钩有效负载。下一步需要了解此域。下面是 `https://smee.io/qrfeVRbFbffd6vD` 的唯一域示例: ![Smee 唯一通道](/assets/images/smee-unique-domain.png) @@ -71,7 +71,7 @@ $ git clone https://github.com/github-developer/github-app-template.git {% note %} -注意:以下步骤与你在 Smee 通道页面中看到的“使用 CLI”说明略有不同。 不需要遵循“使用 Node.js 客户端”或“使用 Probot 的内置支持”说明。 +注意:以下步骤与你在 Smee 通道页面中看到的“使用 CLI”说明略有不同。不需要遵循“使用 Node.js 客户端”或“使用 Probot 的内置支持”说明。 {% endnote %} @@ -94,17 +94,17 @@ $ git clone https://github.com/github-developer/github-app-template.git Connected https://smee.io/qrfeVRbFbffd6vD ``` -`smee --url ` 命令告诉 Smee 将 Smee 通道接收到的所有 webhook 事件转发到计算机上运行的 Smee 客户端。 `--path /event_handler` 选项会将事件转发到 `/event_handler` 路由,我们将在 [后面的部分](#step-5-review-the-github-app-template-code)中介绍这些事件。 `--port 3000` 选项指定端口 3000,这是服务器将侦听的端口。 使用 Smee,您的计算机不需要向公共互联网开放即可从 GitHub 接收 web 挂钩。 您也可以在浏览器中打开 Smee URL 来检查 web 挂钩有效负载。 +`smee --url ` 命令告诉 Smee 将 Smee 通道接收到的所有 webhook 事件转发到计算机上运行的 Smee 客户端。 `--path /event_handler` 选项会将事件转发到 `/event_handler` 路由,我们将在 [后面的部分](#step-5-review-the-github-app-template-code)中介绍这些事件。 `--port 3000` 选项指定端口 3000,这是服务器将侦听的端口。使用 Smee,您的计算机不需要向公共互联网开放即可从 GitHub 接收 web 挂钩。您也可以在浏览器中打开 Smee URL 来检查 web 挂钩有效负载。 -我们建议您在完成本指南其余步骤时保持此终端窗口打开并保持 Smee 连接。 虽然可以断开连接和重新连接 Smee 客户端而不会丢失唯一域(与 `ngrok` 不同),但你可能会发现保持连接状态并在不同的终端窗口中执行其他命令行任务更容易。 +我们建议您在完成本指南其余步骤时保持此终端窗口打开并保持 Smee 连接。虽然可以断开连接和重新连接 Smee 客户端而不会丢失唯一域(与 `ngrok` 不同),但你可能会发现保持连接状态并在不同的终端窗口中执行其他命令行任务更容易。 ## 步骤 2. 注册新的 GitHub 应用程序 -如果还没有 GitHub 帐户,现在是[加入的好时机](https://github.com/join)。 在继续之前,不要忘记验证您的电子邮件地址! 若要注册新应用,请访问 GitHub 配置文件中的[应用设置页面](https://github.com/settings/apps),然后单击“新建 GitHub 应用”。 +如果还没有 GitHub 帐户,现在是[加入的好时机](https://github.com/join)。在继续之前,不要忘记验证您的电子邮件地址!若要注册新应用,请访问 GitHub 配置文件中的[应用设置页面](https://github.com/settings/apps),然后单击“新建 GitHub 应用”。 ![GitHub 网站,显示 **新应用程序**](/assets/images/new-app.png) -您将看到一个表单,您可以在其中输入有关应用程序的详细信息。 有关此页上字段的常规信息,请参阅“[创建 GitHub 应用](/apps/building-github-apps/creating-a-github-app/)”。 在本指南中,您需要在几个字段中输入特定数据: +您将看到一个表单,您可以在其中输入有关应用程序的详细信息。有关此页上字段的常规信息,请参阅“[创建 GitHub 应用](/apps/building-github-apps/creating-a-github-app/)”。在本指南中,您需要在几个字段中输入特定数据: {% note %} @@ -112,21 +112,21 @@ $ git clone https://github.com/github-developer/github-app-template.git {% endnote %} -* 对于“主页 URL”,请使用 Smee 发布的域名。 例如: +* 对于“主页 URL”,请使用 Smee 发布的域名。例如: ![为主页 URL 填写 Smee 域的表单](/assets/images/homepage-url.png) -* 对于“web 挂钩 URL”,也请使用 Smee 发布的域名。 例如: +* 对于“web 挂钩 URL”,也请使用 Smee 发布的域名。例如: ![为 web 挂钩 URL 填写 Smee 域的表单](/assets/images/webhook-url.png) -* 对于“web 挂钩密钥”,请创建密码来保护您的 web 挂钩端点。 这应该是只有您(和 GitHub 通过此表单)知道的密码。 此密钥很重要,因为您将从公共互联网接收有效负载,并且您将使用此密钥来验证 web 挂钩发送者。 请注意,GitHub 应用程序设置表示 web 挂钩密钥是可选的,在大多数情况下确实如此,但要使模板应用程序代码正常工作,您必须设置 web 挂钩密钥。 +* 对于“web 挂钩密钥”,请创建密码来保护您的 web 挂钩端点。这应该是只有您(和 GitHub 通过此表单)知道的密码。此密钥很重要,因为您将从公共互联网接收有效负载,并且您将使用此密钥来验证 web 挂钩发送者。请注意,GitHub 应用程序设置表示 web 挂钩密钥是可选的,在大多数情况下确实如此,但要使模板应用程序代码正常工作,您必须设置 web 挂钩密钥。 ![填写 web 挂钩密钥的表单](/assets/images/webhook-secret.png) -* 在“权限和 Webhook”页面上,可以为应用指定一组权限,这决定了应用可以访问的数据量。 在“存储库权限”部分下,向下滚动到“元数据”并选择 `Access: Read-only`。 如果您决定扩展此模板应用程序,可以在以后更新这些权限。 +* 在“权限和 Webhook”页面上,可以为应用指定一组权限,这决定了应用可以访问的数据量。在“存储库权限”部分下,向下滚动到“元数据”并选择 `Access: Read-only`。如果您决定扩展此模板应用程序,可以在以后更新这些权限。 -* 在“权限和 Webhook”页面的底部,指定这是专用应用还是公共应用。 这是指谁可以安装它:是只有您自己,还是世界上任何人? 现在,通过选择“仅在此帐户上”,将应用设为专用。 +* 在“权限和 Webhook”页面的底部,指定这是专用应用还是公共应用。这是指谁可以安装它:是只有您自己,还是世界上任何人?现在,通过选择“仅在此帐户上”,将应用设为专用。 ![GitHub 应用程序隐私](/assets/images/create_app.png) @@ -134,27 +134,27 @@ $ git clone https://github.com/github-developer/github-app-template.git ## 步骤 3. 保存私钥和应用程序 ID -创建应用后,将返回到[应用设置页面](https://github.com/settings/apps)。 您还有两件事要做: +创建应用后,将返回到[应用设置页面](https://github.com/settings/apps)。您还有两件事要做: -* 为应用生成私钥。 稍后对应用进行身份验证时,需要此私钥。 向下滚动页面,然后单击“生成私钥”。 将生成的 `PEM` 文件(称为 _`app-name`_ - _`date`_ -`private-key.pem`)保存在可以再次找到它的目录中。 +* 为应用生成私钥。稍后对应用进行身份验证时,需要此私钥。向下滚动页面,然后单击“生成私钥”。将生成的 `PEM` 文件(称为 _`app-name`_ - _`date`_ -`private-key.pem`)保存在可以再次找到它的目录中。 ![私钥生成对话框](/assets/images/private_key.png) -* 记下 GitHub 为应用分配的应用 ID。 准备运行时环境时需要此信息。 +* 记下 GitHub 为应用分配的应用 ID。准备运行时环境时需要此信息。 Your app's ID number ## 步骤 4. 准备运行时环境 -为了保证您的信息安全,我们建议将与应用程序相关的所有密钥放在应用程序可以找到的计算机内存中,而不是直接将它们放在代码中。 一个名为 [dotenv](https://github.com/bkeepers/dotenv) 的便捷开发工具将特定于项目的环境变量从 `.env` 文件加载到 `ENV`。 切勿将 `.env` 文件签入 GitHub。 这是一个本地文件,用于存储您不希望在公共互联网上公开的敏感信息。 `.env` 文件已包含在存储库的 [`.gitignore`](/github/getting-started-with-github/ignoring-files/) 文件中以防止这种情况发生。 +为了保证您的信息安全,我们建议将与应用程序相关的所有密钥放在应用程序可以找到的计算机内存中,而不是直接将它们放在代码中。一个名为 [dotenv](https://github.com/bkeepers/dotenv) 的便捷开发工具将特定于项目的环境变量从 `.env` 文件加载到 `ENV`。切勿将 `.env` 文件签入 GitHub。这是一个本地文件,用于存储您不希望在公共互联网上公开的敏感信息。 `.env` 文件已包含在存储库的 [`.gitignore`](/github/getting-started-with-github/ignoring-files/) 文件中以防止这种情况发生。 -在[先决条件部分](#prerequisites)下载的模板代码已经有一个名为 `.env-example` 的示例文件。 将示例文件从 `.env-example` 重命名为 `.env` 或创建名为 `.env` 的 `.env-example` 文件的副本。 你尚未安装 dotenv,但将在本快速入门中稍后运行 `bundle install` 时安装它。 注意:参考本指南中的步骤的快速入门可能会在 `.env-example` 文件中包含其他环境变量。 有关设置这些附加环境变量的指南,请参考 GitHub 上克隆的项目的快速入门指南。 +在[先决条件部分](#prerequisites)下载的模板代码已经有一个名为 `.env-example` 的示例文件。将示例文件从 `.env-example` 重命名为 `.env` 或创建名为 `.env` 的 `.env-example` 文件的副本。你尚未安装 dotenv,但将在本快速入门中稍后运行 `bundle install` 时安装它。注意:参考本指南中的步骤的快速入门可能会在 `.env-example` 文件中包含其他环境变量。有关设置这些附加环境变量的指南,请参考 GitHub 上克隆的项目的快速入门指南。 需要将这些变量添加到 `.env` 文件中: -* _`GITHUB_PRIVATE_KEY`_ :添加 [之前生成并保存](#step-3-save-your-private-key-and-app-id)的私钥。 使用文本编辑器打开 `.pem` 文件或使用命令行显示文件的内容:`cat path/to/your/private-key.pem`。 将文件的全部内容复制为 `.env` 文件中的 `GITHUB_PRIVATE_KEY` 的值。 注意:由于 PEM 文件不止一行,因此需要在值周围添加引号,如下例所示。 -* _`GITHUB_APP_IDENTIFIER`_ :使用在上一节中记下的应用 ID。 -* _`GITHUB_WEBHOOK_SECRET`_ :添加 webhook 密码。 +* _`GITHUB_PRIVATE_KEY`_:添加 [之前生成并保存](#step-3-save-your-private-key-and-app-id)的私钥。使用文本编辑器打开 `.pem` 文件或使用命令行显示文件的内容:`cat path/to/your/private-key.pem`。将文件的全部内容复制为 `.env` 文件中的 `GITHUB_PRIVATE_KEY` 的值。注意:由于 PEM 文件不止一行,因此需要在值周围添加引号,如下例所示。 +* _`GITHUB_APP_IDENTIFIER`_:使用在上一节中记下的应用 ID。 +* _`GITHUB_WEBHOOK_SECRET`_:添加 webhook 密码。 下面是 `.env` 示例文件: @@ -168,15 +168,15 @@ GITHUB_APP_IDENTIFIER=12345 GITHUB_WEBHOOK_SECRET=your webhook secret ``` -## 步骤 5。 审查 GitHub 应用程序模板代码 +## 步骤 5。审查 GitHub 应用程序模板代码 -模板应用程序代码已经包含每个 GitHub 应用程序都需要的一些代码。 本节将引导您浏览 GitHub 应用程序模板中已经存在的代码。 在本节中,您不需要完成任何步骤。 如果已经熟悉模板代码,可以直接跳到“[步骤 6. 启动服务器](#step-6-start-the-server)。” +模板应用程序代码已经包含每个 GitHub 应用程序都需要的一些代码。本节将引导您浏览 GitHub 应用程序模板中已经存在的代码。在本节中,您不需要完成任何步骤。如果已经熟悉模板代码,可以直接跳到“[步骤 6. 启动服务器](#step-6-start-the-server)。” -在首选的文本编辑器中打开 `template_server.rb` 文件。 您会在整个文件中看到为模板代码提供更多上下文信息的注释。 我们建议您仔细阅读这些注释,甚至为您编写的新代码添加自己的注释。 +在首选的文本编辑器中打开 `template_server.rb` 文件。您会在整个文件中看到为模板代码提供更多上下文信息的注释。我们建议您仔细阅读这些注释,甚至为您编写的新代码添加自己的注释。 在文件顶部,你会看到 `set :port 3000`,它将启动 Web 服务器时使用的端口设置为与在“[步骤 1. 启动新的 Smee 通道](#step-1-start-a-new-smee-channel)中将 Webhook 有效负载重定向到的端口相匹配。” -你将看到下一个代码是 `class GHApp < Sinatra::Application` 声明。 您将在此类中编写 GitHub 应用程序的所有代码。 +你将看到下一个代码是 `class GHApp < Sinatra::Application` 声明。您将在此类中编写 GitHub 应用程序的所有代码。 模板中现成的类可执行以下操作: * [读取环境变量](#read-the-environment-variables) @@ -203,7 +203,7 @@ APP_IDENTIFIER = ENV['GITHUB_APP_IDENTIFIER'] ### 启用日志 -接下来是一个在开发过程中启用日志记录的代码块,这是 Sinatra 中的默认环境。 此代码在 `DEBUG` 级别打开日志记录,以便在开发应用时在终端中显示有用的输出: +接下来是一个在开发过程中启用日志记录的代码块,这是 Sinatra 中的默认环境。此代码在 `DEBUG` 级别打开日志记录,以便在开发应用时在终端中显示有用的输出: ``` ruby # Turn on Sinatra's verbose logging during development @@ -214,7 +214,7 @@ end ### 定义前置过滤器 -Sinatra 使用[前置过滤器](https://github.com/sinatra/sinatra#filters),让你可以在路由处理程序之前执行代码。 模板中的 `before` 块调用四个[帮助程序方法](https://github.com/sinatra/sinatra#helpers)。 模板应用在[后面的部分](#define-the-helper-methods)中定义这些帮助程序方法。 +Sinatra 使用[前置过滤器](https://github.com/sinatra/sinatra#filters),让你可以在路由处理程序之前执行代码。模板中的 `before` 块调用四个[帮助程序方法](https://github.com/sinatra/sinatra#helpers)。模板应用在[后面的部分](#define-the-helper-methods)中定义这些帮助程序方法。 ``` ruby # Before each request to the `/event_handler` route @@ -229,7 +229,7 @@ end ### 定义路由处理程序 -模板代码中包含空路由。 此代码处理对 `/event_handler` 路由的所有 `POST` 请求。 你将不会在本快速入门中编写此事件处理程序,但请参阅其他[快速入门指南](/apps/quickstart-guides/),了解如何扩展此模板应用的示例。 +模板代码中包含空路由。此代码处理对 `/event_handler` 路由的所有 `POST` 请求。你将不会在本快速入门中编写此事件处理程序,但请参阅其他[快速入门指南](/apps/quickstart-guides/),了解如何扩展此模板应用的示例。 ``` ruby post '/event_handler' do @@ -239,7 +239,7 @@ end ### 定义帮助程序方法 -此模板中的辅助方法可以完成大部分繁重的工作。 代码的这一部分中定义了四个辅助方法。 +此模板中的辅助方法可以完成大部分繁重的工作。代码的这一部分中定义了四个辅助方法。 #### 处理 web 挂钩有效负载 @@ -247,11 +247,11 @@ end #### 验证 web 挂钩签名 -第二种方法 `verify_webhook_signature` 执行 webhook 签名验证,确保 GitHub 生成了事件。 要详细了解 `verify_webhook_signature` 帮助程序方法中的代码,请参阅“[保护 webhook](/webhooks/securing/)。” 如果 web 挂钩是安全的,则此方法会将所有传入的有效负载记录到您的终端。 记录器代码有助于验证 Web 服务器是否正常运行,但是您以后可以随时删除它。 +第二种方法 `verify_webhook_signature` 执行 webhook 签名验证,确保 GitHub 生成了事件。要详细了解 `verify_webhook_signature` 帮助程序方法中的代码,请参阅“[保护 webhook](/webhooks/securing/)。”如果 web 挂钩是安全的,则此方法会将所有传入的有效负载记录到您的终端。记录器代码有助于验证 Web 服务器是否正常运行,但是您以后可以随时删除它。 #### 验证为 GitHub 应用程序 -若要进行 API 调用,你将使用 [Octokit 库](http://octokit.github.io/octokit.rb/)。 要对此库进行任何有意义的操作,都需要您(或者更确切地说是您的应用程序)进行身份验证。 GitHub 应用程序有两种身份验证方法: +若要进行 API 调用,你将使用 [Octokit 库](http://octokit.github.io/octokit.rb/)。要对此库进行任何有意义的操作,都需要您(或者更确切地说是您的应用程序)进行身份验证。GitHub 应用程序有两种身份验证方法: - 使用 [JSON Web 令牌 (JWT)](https://jwt.io/introduction) 验证为 GitHub 应用。 - 使用安装访问令牌验证为 GitHub 应用程序的特定安装设施。 @@ -263,7 +263,7 @@ end * 可以检索有关 GitHub 应用程序的高级别管理信息。 * 为应用程序安装申请访问令牌。 -例如,通过验证为 GitHub 应用程序,您可以检索已安装您的应用程序的帐户(组织帐户和个人帐户)列表。 不过这种身份验证方法不允许您使用 API 做很多事情。 要访问仓库的数据并代表安装设施执行操作,您需要验证为安装设施。 为此,您需要先验证为 GitHub 应用程序才能请求安装设施访问令牌。 +例如,通过验证为 GitHub 应用程序,您可以检索已安装您的应用程序的帐户(组织帐户和个人帐户)列表。不过这种身份验证方法不允许您使用 API 做很多事情。要访问仓库的数据并代表安装设施执行操作,您需要验证为安装设施。为此,您需要先验证为 GitHub 应用程序才能请求安装设施访问令牌。 在使用 Octokit.rb 库进行 API 调用之前,需要初始化验证为 GitHub 应用的 [Octokit 客户端](http://octokit.github.io/octokit.rb/Octokit/Client.html)。 `authenticate_app` 帮助程序方法就是这样做的! @@ -293,11 +293,11 @@ def authenticate_app end ``` -上面的代码生成一个 [JSON Web 令牌 (JWT)](https://jwt.io/introduction),并使用它(连同应用的私钥)来初始化 Octokit 客户端。 GitHub 通过使用应用程序存储的公钥验证令牌来检查请求的身份验证。 若要详细了解此代码的工作原理,请参阅“[验证为 GitHub 应用](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app)”。 +上面的代码生成一个 [JSON Web 令牌 (JWT)](https://jwt.io/introduction),并使用它(连同应用的私钥)来初始化 Octokit 客户端。GitHub 通过使用应用程序存储的公钥验证令牌来检查请求的身份验证。若要详细了解此代码的工作原理,请参阅“[验证为 GitHub 应用](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app)”。 #### 验证为安装 -“安装”是指已安装该应用的任何用户或组织帐户。 即使有人在多个仓库中安装应用程序,也只能算作一个安装设施,因为它们在同一个帐户内。 最后一个帮助程序方法 `authenticate_installation` 初始化验证为安装的 [Octokit 客户端](http://octokit.github.io/octokit.rb/Octokit/Client.html)。 此 Octokit 客户端是您用来进行经验证 API 调用的客户端。 +“安装”是指已安装该应用的任何用户或组织帐户。即使有人在多个仓库中安装应用程序,也只能算作一个安装设施,因为它们在同一个帐户内。最后一个帮助程序方法 `authenticate_installation` 初始化验证为安装的 [Octokit 客户端](http://octokit.github.io/octokit.rb/Octokit/Client.html)。此 Octokit 客户端是您用来进行经验证 API 调用的客户端。 ``` ruby # Instantiate an Octokit client authenticated as an installation of a @@ -309,22 +309,22 @@ def authenticate_installation(payload) end ``` -[`create_app_installation_access_token`](http://octokit.github.io/octokit.rb/Octokit/Client/Apps.html#create_app_installation_access_token-instance_method) Octokit 方法创建一个安装令牌。 此方法接受两个参数: +[`create_app_installation_access_token`](http://octokit.github.io/octokit.rb/Octokit/Client/Apps.html#create_app_installation_access_token-instance_method) Octokit 方法创建一个安装令牌。此方法接受两个参数: -* 安装 设施(整数):GitHub 应用程序安装设施的 ID +* 安装 设施 (整数):GitHub 应用程序安装设施的 ID * 选项(哈希,默认为 `{}`):一组可自定义的选项 -每当 GitHub 应用收到 Webhook 时,它都包含一个具有 `id` 的 `installation` 对象。 使用验证为 GitHub 应用的客户端,将此 ID 传递给 `create_app_installation_access_token` 方法,以便为每个安装生成访问令牌。 由于您没有向该方法传递任何选项,因此这些选项默认为空哈希。 如果回顾[文档](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation),可以看到包含两个字段(`token` 和 `expired_at`)的 `create_app_installation_access_token` 响应。 模板代码选择响应中的令牌并初始化安装客户端。 +每当 GitHub 应用收到 Webhook 时,它都包含一个具有 `id` 的 `installation` 对象。使用验证为 GitHub 应用的客户端,将此 ID 传递给 `create_app_installation_access_token` 方法,以便为每个安装生成访问令牌。由于您没有向该方法传递任何选项,因此这些选项默认为空哈希。如果回顾[文档](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation),可以看到包含两个字段(`token` 和 `expired_at`)的 `create_app_installation_access_token` 响应。模板代码选择响应中的令牌并初始化安装客户端。 -使用此方法,您的应用程序每次收到新的 web 挂钩有效负载时,都会为触发事件的安装设施创建一个客户端。 此身份验证过程使您的 GitHub 应用程序能够在任何帐户上的所有安装设施中正常工作。 +使用此方法,您的应用程序每次收到新的 web 挂钩有效负载时,都会为触发事件的安装设施创建一个客户端。此身份验证过程使您的 GitHub 应用程序能够在任何帐户上的所有安装设施中正常工作。 现在您可以开始进行 API 调用了! -## 步骤 6。 启动服务器 +## 步骤 6。启动服务器 应用还没有执行任何操作,但是现在你可以让它在服务器上运行。 -让 Smee 在您终端的当前选项卡中运行。 打开一个新选项卡,然后通过 `cd` 进入[克隆模板应用代码](#prerequisites)的目录。 此存储库中的 Ruby 代码将启动 [Sinatra](http://sinatrarb.com/) Web 服务器。 此代码有一些依赖项。 可以通过运行以下命令安装它们: +让 Smee 在您终端的当前选项卡中运行。打开一个新选项卡,然后通过 `cd` 进入[克隆模板应用代码](#prerequisites)的目录。此存储库中的 Ruby 代码将启动 [Sinatra](http://sinatrarb.com/) Web 服务器。此代码有一些依赖项。可以通过运行以下命令安装它们: ```shell $ gem install bundler @@ -356,23 +356,23 @@ $ bundle exec ruby template_server.rb 如果看到错误,请确保已在包含 `template_server.rb` 的目录中创建了 `.env` 文件。 -服务器运行后,你可以转到浏览器中的 `http://localhost:3000` 对其进行测试。 如果应用程序按预期工作,您将看到一个有用的错误页面: +服务器运行后,你可以转到浏览器中的 `http://localhost:3000` 对其进行测试。如果应用程序按预期工作,您将看到一个有用的错误页面: Sinatra's 404 error page -很好! 即使它是错误页面,它也是一个 Sinatra 错误页面,这意味着你的应用已按预期连接到服务器。 之所以会看到此消息,是因为您还没有给应用程序提供任何要显示的内容。 +很好!即使它是错误页面,它也是一个 Sinatra 错误页面,这意味着你的应用已按预期连接到服务器。之所以会看到此消息,是因为您还没有给应用程序提供任何要显示的内容。 ## 步骤 7. 在您的帐户上安装应用程序 -您可以通过触发要接收的事件来测试服务器是否正在侦听您的应用程序。 你可以测试一个简单的事件,那就是在 GitHub 帐户上安装应用,此操作应该会发送 [`installation`](/webhooks/event-payloads/#installation) 事件。 如果应用收到它,你应该会在启动 `template_server.rb` 的终端选项卡中看到一些输出。 +您可以通过触发要接收的事件来测试服务器是否正在侦听您的应用程序。你可以测试一个简单的事件,那就是在 GitHub 帐户上安装应用,此操作应该会发送 [`installation`](/webhooks/event-payloads/#installation) 事件。如果应用收到它,你应该会在启动 `template_server.rb` 的终端选项卡中看到一些输出。 -若要安装应用,请访问[应用设置页](https://github.com/settings/apps),选择应用,然后单击边栏中的“安装应用”。 在用户名旁边,单击“安装”。 +若要安装应用,请访问[应用设置页](https://github.com/settings/apps),选择应用,然后单击边栏中的“安装应用”。在用户名旁边,单击“安装”。 -系统会询问您是在所有仓库还是所选仓库上安装应用程序。 如果你不想在所有存储库中安装该应用,也没关系! 您可能需要创建一个沙箱仓库用于测试,并在那里安装您的应用程序。 +系统会询问您是在所有仓库还是所选仓库上安装应用程序。如果你不想在所有存储库中安装该应用,也没关系!您可能需要创建一个沙箱仓库用于测试,并在那里安装您的应用程序。 App installation permissions -单击“安装”后,查看终端中的输出。 你应看到与下面类似的内容: +单击“安装”后,查看终端中的输出。你应看到与下面类似的内容: ```shell > D, [2018-06-29T15:45:43.773077 #30488] DEBUG -- : ---- received event integration_installation @@ -383,15 +383,15 @@ $ bundle exec ruby template_server.rb > 192.30.252.39 - - [29/Jun/2018:15:45:43 -0400] "POST / HTTP/2" 200 2 0.0019 ``` -好消息! 这意味着您的应用程序收到了它已安装在您的 GitHub 帐户上的通知。 如果您看到以下图标,则表明您的应用程序正在服务器上按预期运行。 🙌 +好消息!这意味着您的应用程序收到了它已安装在您的 GitHub 帐户上的通知。如果您看到以下图标,则表明您的应用程序正在服务器上按预期运行。 🙌 -如果没有看到输出,请确保 Smee 在另一个终端选项卡中正常运行。如果需要重启 Smee,请注意还需要卸载并重新安装该应用以再次将 `installation` 事件发送到你的应用并在终端中查看输出 。 如果问题不在 Smee 上,请查看“[故障排除](#troubleshooting)”部分了解其他原因。 +如果没有看到输出,请确保 Smee 在另一个终端选项卡中正常运行。如果需要重启 Smee,请注意还需要卸载并重新安装该应用以再次将 `installation` 事件发送到你的应用并在终端中查看输出。如果问题不在 Smee 上,请查看“[故障排除](#troubleshooting)”部分了解其他原因。 如果想知道上面的终端输出来自哪里,它是在 `template_server.rb` 中的[应用模板代码](#prerequisites) 中编写的。 ## 故障排除 -以下是一些常见问题和一些建议的解决方案。 如果您遇到任何其他问题,可以在 {% data variables.product.prodname_support_forum_with_url %} 中寻求帮助或建议。 +以下是一些常见问题和一些建议的解决方案。如果您遇到任何其他问题,可以在 {% data variables.product.prodname_support_forum_with_url %} 中寻求帮助或建议。 * 问:我在尝试安装 Smee 命令行客户端时,收到以下错误: @@ -399,7 +399,7 @@ $ bundle exec ruby template_server.rb > npm: command not found ``` - 答:你似乎没有安装 npm。 安装它的最佳方法是在 https://nodejs.org 下载 Node.js 包并按照相应系统的安装说明进行操作。 npm 将随 Node.js 一起安装。 + 答:你似乎没有安装 npm。安装它的最佳方法是在 https://nodejs.org 下载 Node.js 包并按照相应系统的安装说明进行操作。npm 将随 Node.js 一起安装。 * 问:我在运行服务器时,收到以下错误: @@ -407,7 +407,7 @@ $ bundle exec ruby template_server.rb > server.rb:38:in `initialize': Neither PUB key nor PRIV key: header too long (OpenSSL::PKey::RSAError) ``` - 答:你可能没有完全正确地设置私钥环境变量。 你的 `GITHUB_PRIVATE_KEY` 变量应如下所示: + 答:你可能没有完全正确地设置私钥环境变量。你的 `GITHUB_PRIVATE_KEY` 变量应如下所示: ``` GITHUB_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- @@ -425,18 +425,18 @@ $ bundle exec ruby template_server.rb > Octokit::Unauthorized ... 401 - Bad credentials` ``` - 答:可能是验证为了 GitHub 应用,而不是安装。 确保遵循“[验证为安装](#authenticating-as-an-installation)”下的所有步骤,并为 API 操作使用 `@installation_client` 实例变量(使用安装访问令牌进行身份验证),而不是 `@app_client` 实例变量(通过 JWT 进行身份验证)。 `@app_client` 只能检索有关应用的高级信息并获取安装访问令牌。 它在 API 中做不了太多其他事情。 + 答:可能是验证为了 GitHub 应用,而不是安装。确保遵循“[验证为安装](#authenticating-as-an-installation)”下的所有步骤,并为 API 操作使用 `@installation_client` 实例变量(使用安装访问令牌进行身份验证),而不是 `@app_client` 实例变量(通过 JWT 进行身份验证)。 `@app_client` 只能检索有关应用的高级信息并获取安装访问令牌。它在 API 中做不了太多其他事情。 -* 问:我的服务器没有监听事件! Smee 客户端在终端窗口中运行,我正在将应用程序安装到 GitHub 上的仓库中,但是在运行服务器的终端窗口中没有看到任何输出。 +* 问:我的服务器没有监听事件!Smee 客户端在终端窗口中运行,我正在将应用程序安装到 GitHub 上的仓库中,但是在运行服务器的终端窗口中没有看到任何输出。 - 答:可能没有运行 Smee 客户端,运行 Smee 命令时使用了错误的参数,或者你的 GitHub 应用设置中可能没有正确的 Smee 域。 首先进行检查,确保 Smee 客户端正在终端选项卡中运行。如果这不是问题的原因,请访问[应用设置页面](https://github.com/settings/apps)并检查“[步骤 2. 注册新的 GitHub 应用](#step-2-register-a-new-github-app)”中显示的字段。 确保这些字段中的域与在“[步骤 1. 启动新的 Smee 通道](#step-1-start-a-new-smee-channel)”中的 `smee -u ` 命令中使用的域相匹配。 如果以上方法均不能解决问题,请检查是否在运行完整的 Smee 命令(包括 `--path` 和 `--port` 选项),例如:`smee --url https://smee.io/qrfeVRbFbffd6vD --path /event_handler --port 3000`(用自己的 Smee 域替换 `https://smee.io/qrfeVRbFbffd6vD`)。 + 答:可能没有运行 Smee 客户端,运行 Smee 命令时使用了错误的参数,或者你的 GitHub 应用设置中可能没有正确的 Smee 域。首先进行检查,确保 Smee 客户端正在终端选项卡中运行。如果这不是问题的原因,请访问[应用设置页面](https://github.com/settings/apps)并检查“[步骤 2. 注册新的 GitHub 应用](#step-2-register-a-new-github-app)”中显示的字段。确保这些字段中的域与在“[步骤 1. 启动新的 Smee 通道](#step-1-start-a-new-smee-channel)”中的 `smee -u ` 命令中使用的域相匹配。如果以上方法均不能解决问题,请检查是否在运行完整的 Smee 命令(包括 `--path` 和 `--port` 选项),例如:`smee --url https://smee.io/qrfeVRbFbffd6vD --path /event_handler --port 3000`(用自己的 Smee 域替换 `https://smee.io/qrfeVRbFbffd6vD`)。 * 问:我在调试输出中收到 `Octokit::NotFound` 404 错误: ``` 2018-12-06 15:00:56 - Octokit::NotFound - POST {% data variables.product.api_url_code %}/app/installations/500991/access_tokens: 404 - Not Found // See: /v3/apps/#create-a-new-installation-token: ``` - 答:确保 `.env` 文件中的变量正确无误。 确保没有在任何其他环境变量文件(如 `bash_profile`)中设置相同的变量。 可以通过将 `puts` 语句添加到应用代码并重新运行代码来检查应用正在使用的环境变量。 例如,为确保拥有正确的私钥集,可以将 `puts PRIVATE_KEY` 添加到应用代码中: + 答:确保 `.env` 文件中的变量正确无误。确保没有在任何其他环境变量文件(如 `bash_profile`)中设置相同的变量。可以通过将 `puts` 语句添加到应用代码并重新运行代码来检查应用正在使用的环境变量。例如,为确保拥有正确的私钥集,可以将 `puts PRIVATE_KEY` 添加到应用代码中: ``` PRIVATE_KEY = OpenSSL::PKey::RSA.new(ENV['GITHUB_PRIVATE_KEY'].gsub('\n', "\n")) @@ -445,7 +445,7 @@ $ bundle exec ruby template_server.rb ## 结束语 -完成本指南后,您已了解开发 GitHub 应用程序的基本构建块! 回顾一下: +完成本指南后,您已了解开发 GitHub 应用程序的基本构建块!回顾一下: * 注册新的 GitHub 应用程序 * 使用 Sme 接收 web 挂钩有效负载 @@ -455,4 +455,4 @@ $ bundle exec ruby template_server.rb ## 后续步骤 -现在,您在服务器上运行了 GitHub 应用程序。 它尚未执行任何特别的操作,但请查看其他[快速入门指南](/apps/quickstart-guides/)中的一些自定义 GitHub 应用模板的方法。 +现在,您在服务器上运行了 GitHub 应用程序。它尚未执行任何特别的操作,但请查看其他[快速入门指南](/apps/quickstart-guides/)中的一些自定义 GitHub 应用模板的方法。 diff --git a/translations/zh-CN/content/developers/apps/guides/creating-ci-tests-with-the-checks-api.md b/translations/zh-CN/content/developers/apps/guides/creating-ci-tests-with-the-checks-api.md index 4143bd3aed59..507d62747d7e 100644 --- a/translations/zh-CN/content/developers/apps/guides/creating-ci-tests-with-the-checks-api.md +++ b/translations/zh-CN/content/developers/apps/guides/creating-ci-tests-with-the-checks-api.md @@ -23,21 +23,21 @@ ms.locfileid: '147080990' 本指南将介绍 [GitHub 应用](/apps/)和[检查 API](/rest/reference/checks),你将使用它们生成运行测试的持续集成 (CI) 服务器。 -CI 是一种需要频繁提交代码到共享仓库的软件实践。 频繁提交代码能较早检测到错误,减少在查找错误来源时开发者需要调试的代码量。 频繁的代码更新也更便于从软件开发团队的不同成员合并更改。 这对开发者非常有益,他们可以将更多时间用于编写代码,而减少在调试错误或解决合并冲突上所花的时间。 🙌 +CI 是一种需要频繁提交代码到共享仓库的软件实践。频繁提交代码能较早检测到错误,减少在查找错误来源时开发者需要调试的代码量。频繁的代码更新也更便于从软件开发团队的不同成员合并更改。这对开发者非常有益,他们可以将更多时间用于编写代码,而减少在调试错误或解决合并冲突上所花的时间。 🙌 -CI 服务器托管运行 CI 测试的代码,如代码语法检查(检查样式格式)、安全检查、代码覆盖率以及针对仓库中新代码提交的其他检查。 CI 服务器甚至可以构建代码并将其部署到暂存或生产服务器。 有关可以使用 GitHub 应用创建的 CI 测试类型的一些示例,请查看 GitHub 市场中可用的[持续集成应用](https://github.com/marketplace/category/continuous-integration)。 +CI 服务器托管运行 CI 测试的代码,如代码语法检查(检查样式格式)、安全检查、代码覆盖率以及针对仓库中新代码提交的其他检查。CI 服务器甚至可以构建代码并将其部署到暂存或生产服务器。有关可以使用 GitHub 应用创建的 CI 测试类型的一些示例,请查看 GitHub 市场中可用的[持续集成应用](https://github.com/marketplace/category/continuous-integration)。 {% data reusables.apps.app-ruby-guides %} ### 检查 API 概述 -[检查 API](/rest/reference/checks) 允许你设置针对存储库中的每个代码提交自动运行的 CI 测试。 检查 API 会在 GitHub 上的拉取请求的“检查”选项卡中报告有关每个检查的详细信息。使用检查 API,可以为特定代码行创建具有其他详细信息的注释。 注释显示在“检查”选项卡中。当你为拉取请求中的文件创建注释时,注释也会显示在“已更改的文件”选项卡中。 +[检查 API](/rest/reference/checks) 允许你设置针对存储库中的每个代码提交自动运行的 CI 测试。检查 API 会在 GitHub 上的拉取请求的“检查”选项卡中报告有关每个检查的详细信息。使用检查 API,可以为特定代码行创建具有其他详细信息的注释。注释显示在“检查”选项卡中。当你为拉取请求中的文件创建注释时,注释也会显示在“已更改的文件”选项卡中。 -检查套件是一组检查运行(单个 CI 测试)。 套件和运行都包含 GitHub 上的拉取请求中可见的状态。 您可以使用状态来确定何时代码提交引入错误。 将这些状态与[受保护的分支](/rest/reference/repos#branches)结合使用,可以防止人们过早合并拉取请求。 有关更多详细信息,请参阅“[关于受保护的分支](/github/administering-a-repository/about-protected-branches#require-status-checks-before-merging)”。 +检查套件是一组检查运行(单个 CI 测试)。套件和运行都包含 GitHub 上的拉取请求中可见的状态。您可以使用状态来确定何时代码提交引入错误。将这些状态与[受保护的分支](/rest/reference/repos#branches)结合使用,可以防止人们过早合并拉取请求。有关更多详细信息,请参阅“[关于受保护的分支](/github/administering-a-repository/about-protected-branches#require-status-checks-before-merging)”。 -每当将新代码推送到存储库时,检查 API 都会将 [`check_suite` Webhook 事件](/webhooks/event-payloads/#check_suite)发送到存储库上安装的所有 GitHub 应用。 要接收所有检查 API 事件操作,应用必须具有 `checks:write` 权限。 GitHub 使用默认流自动为存储库中的新代码提交创建 `check_suite` 事件,尽管可根据需要[更新检查套件的存储库首选项](/rest/reference/checks#update-repository-preferences-for-check-suites)。 以下是默认流程的工作方式: +每当将新代码推送到存储库时,检查 API 都会将 [`check_suite` Webhook 事件](/webhooks/event-payloads/#check_suite)发送到存储库上安装的所有 GitHub 应用。要接收所有检查 API 事件操作,应用必须具有 `checks:write` 权限。GitHub 使用默认流自动为存储库中的新代码提交创建 `check_suite` 事件,尽管可根据需要[更新检查套件的存储库首选项](/rest/reference/checks#update-repository-preferences-for-check-suites)。以下是默认流程的工作方式: -1. 每当有人将代码推送到存储库时,GitHub 都会将包含 `requested` 操作的 `check_suite` 事件发送到存储库上安装的具有 `checks:write` 权限的所有 GitHub 应用。 此事件让应用程序知道推送了代码,并且 GitHub 已自动创建新的检查套件。 +1. 每当有人将代码推送到存储库时,GitHub 都会将包含 `requested` 操作的 `check_suite` 事件发送到存储库上安装的具有 `checks:write` 权限的所有 GitHub 应用。此事件让应用程序知道推送了代码,并且 GitHub 已自动创建新的检查套件。 1. 当应用收到此事件时,它可以向该套件[添加检查运行](/rest/reference/checks#create-a-check-run)。 1. 检查运行可能包括在特定代码行中显示的[注释](/rest/reference/checks#annotations-object)。 @@ -58,11 +58,11 @@ CI 服务器托管运行 CI 测试的代码,如代码语法检查(检查样 ## 先决条件 -在开始之前,你可能需要熟悉 [GitHub 应用](/apps/)、[Webhook](/webhooks) 和[检查 API](/rest/reference/checks)(如果还没有这么做)。 可以在 [REST API 文档](/rest)中找到更多 API。检查 API 也可用于 [GraphQL](/graphql),但本快速入门重点介绍了 REST。 有关更多详细信息,请参阅 GraphQL [检查套件](/graphql/reference/objects#checksuite)和[检查运行](/graphql/reference/objects#checkrun)对象。 +在开始之前,你可能需要熟悉 [GitHub 应用](/apps/)、[Webhook](/webhooks) 和[检查 API](/rest/reference/checks)(如果还没有这么做)。可以在 [REST API 文档](/rest)中找到更多 API。检查 API 也可用于 [GraphQL](/graphql),但本快速入门重点介绍了 REST。有关更多详细信息,请参阅 GraphQL [检查套件](/graphql/reference/objects#checksuite)和[检查运行](/graphql/reference/objects#checkrun)对象。 你将使用 [Ruby 编程语言](https://www.ruby-lang.org/en/)、[Smee](https://smee.io/) Webhook 有效负载交付服务、GitHub REST API 的 [Octokit.rb Ruby 库](http://octokit.github.io/octokit.rb/)和 [Sinatra Web 框架](http://sinatrarb.com/)来创建检查 API CI 服务器应用。 -完成此项目并不需要您精通任何这些工具或概念。 本指南将引导您完成所有必需的步骤。 在开始使用检查 API 创建 CI 测试之前,您需要执行以下操作: +完成此项目并不需要您精通任何这些工具或概念。本指南将引导您完成所有必需的步骤。在开始使用检查 API 创建 CI 测试之前,您需要执行以下操作: 1. 克隆[使用检查 API 创建 CI 测试](https://github.com/github-developer/creating-ci-tests-with-the-checks-api)存储库。 ```shell @@ -71,21 +71,21 @@ CI 服务器托管运行 CI 测试的代码,如代码语法检查(检查样 在目录中,你将找到包含本快速入门将要使用的模板代码的 `template_server.rb` 文件以及包含已完成项目代码的 `server.rb` 文件。 -1. 按照“[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)”快速入门中的步骤来配置和运行应用服务器。 注意:请使用在本快速入门的上一步中克隆的存储库中的 `template_server.rb` 文件,而不要[克隆 GitHub 应用模板存储库](/apps/quickstart-guides/setting-up-your-development-environment/#prerequisites)。 +1. 按照“[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)”快速入门中的步骤来配置和运行应用服务器。注意:请使用在本快速入门的上一步中克隆的存储库中的 `template_server.rb` 文件,而不要[克隆 GitHub 应用模板存储库](/apps/quickstart-guides/setting-up-your-development-environment/#prerequisites)。 如果你之前已完成 GitHub 应用快速入门,请确保注册一个新的 GitHub 应用,并开启一个新的 Smee 通道用于本快速入门。 如果在设置模板 GitHub 应用时遇到问题,请参阅[故障排除](/apps/quickstart-guides/setting-up-your-development-environment/#troubleshooting)部分。 -## 第 1 部分。 创建检查 API 接口 +## 第 1 部分。创建检查 API 接口 -在本部分,你将添加必要的代码以接收 `check_suite` Webhook 事件并创建和更新检查运行。 您还将学习在 GitHub 上重新请求检查时如何创建检查运行。 在本节的最后,您将能够查看在 GitHub 拉取请求中创建的检查运行。 +在本部分,你将添加必要的代码以接收 `check_suite` Webhook 事件并创建和更新检查运行。您还将学习在 GitHub 上重新请求检查时如何创建检查运行。在本节的最后,您将能够查看在 GitHub 拉取请求中创建的检查运行。 -您的检查运行不会对本节中的代码执行任何检查。 你将在[第 2 部分:创建 Octo RuboCop CI 测试](#part-2-creating-the-octo-rubocop-ci-test)中添加该功能。 +您的检查运行不会对本节中的代码执行任何检查。你将在[第 2 部分:创建 Octo RuboCop CI 测试](#part-2-creating-the-octo-rubocop-ci-test)中添加该功能。 -您应该已经配置了可将 web 挂钩有效负载转发到本地服务器的 Smee 通道。 您的服务器应该正在运行并连接到您注册并安装在测试仓库的 GitHub 应用程序。 如果尚未完成“[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)”中的步骤,请先执行此操作,然后才能继续。 +您应该已经配置了可将 web 挂钩有效负载转发到本地服务器的 Smee 通道。您的服务器应该正在运行并连接到您注册并安装在测试仓库的 GitHub 应用程序。如果尚未完成“[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)”中的步骤,请先执行此操作,然后才能继续。 -让我们开始吧! 以下是您将在第 1 部分中完成的步骤: +让我们开始吧!以下是您将在第 1 部分中完成的步骤: 1. [更新应用权限](#step-11-updating-app-permissions) 1. [添加事件处理](#step-12-adding-event-handling) @@ -94,7 +94,7 @@ CI 服务器托管运行 CI 测试的代码,如代码语法检查(检查样 ## 步骤 1.1. 更新应用程序权限 -如果你在[首次注册应用](#prerequisites)时接受了默认权限,则意味着你的应用无法访问大多数资源。 对于此示例,您的应用程序将需要读取和写入检查的权限。 +如果你在[首次注册应用](#prerequisites)时接受了默认权限,则意味着你的应用无法访问大多数资源。对于此示例,您的应用程序将需要读取和写入检查的权限。 要更新应用程序的权限: @@ -103,13 +103,13 @@ CI 服务器托管运行 CI 测试的代码,如代码语法检查(检查样 1. 在“订阅事件”部分中,选择“检查套件”和“检查运行”以订阅这些事件。 {% data reusables.apps.accept_new_permissions_steps %} -很好! 您的应用程序现在有权限执行所需的任务。 现在您可以添加代码来处理事件。 +很好!您的应用程序现在有权限执行所需的任务。现在您可以添加代码来处理事件。 ## 步骤 1.2. 添加事件处理 -现在,应用已订阅“检查套件”和“检查运行” 事件,它将开始接收 [`check_suite`](/webhooks/event-payloads/#check_suite) 和 [`check_run`](/webhooks/event-payloads/#check_run) Webhook。 GitHub 将 Webhook 有效负载作为 `POST` 请求发送。 因为你已将 Smee Webhook 有效负载转发到 `http://localhost/event_handler:3000`,因此服务器将在 `post '/event_handler'` 路由中接收 `POST` 请求有效负载。 +现在,应用已订阅“检查套件”和“检查运行”事件,它将开始接收 [`check_suite`](/webhooks/event-payloads/#check_suite) 和 [`check_run`](/webhooks/event-payloads/#check_run) Webhook。GitHub 将 Webhook 有效负载作为 `POST` 请求发送。因为你已将 Smee Webhook 有效负载转发到 `http://localhost/event_handler:3000`,因此服务器将在 `post '/event_handler'` 路由中接收 `POST` 请求有效负载。 -空 `post '/event_handler'` 路由已包含在你在[先决条件](#prerequisites)部分中下载的 `template_server.rb` 文件中。 空路由如下所示: +空 `post '/event_handler'` 路由已包含在你在[先决条件](#prerequisites)部分中下载的 `template_server.rb` 文件中。空路由如下所示: ``` ruby post '/event_handler' do @@ -135,13 +135,13 @@ when 'check_suite' end ``` -GitHub 发送的每个事件都包含一个名为 `HTTP_X_GITHUB_EVENT` 的请求标头,它指示 `POST` 请求中的事件类型。 现在,你只关注类型为 `check_suite` 的事件,在创建新的检查套件时会触发这些事件。 每个事件都有一个附加的 `action` 字段,它指示触发事件的操作类型。 对于 `check_suite`,`action` 字段可以是 `requested`、`rerequested` 或 `completed`。 +GitHub 发送的每个事件都包含一个名为 `HTTP_X_GITHUB_EVENT` 的请求标头,它指示 `POST` 请求中的事件类型。现在,你只关注类型为 `check_suite` 的事件,在创建新的检查套件时会触发这些事件。每个事件都有一个附加的 `action` 字段,它指示触发事件的操作类型。对于 `check_suite`,`action` 字段可以是 `requested`、`rerequested` 或 `completed`。 -每当有代码推送到存储库时,`requested` 操作会请求检查运行,而 `rerequested` 操作则请求你对存储库中已经存在的代码重新运行检查。 由于 `requested` 和 `rerequested` 操作都需要创建检查运行,因此你将调用名为 `create_check_run` 的帮助程序。 现在我们来编写该方法。 +每当有代码推送到存储库时,`requested` 操作会请求检查运行,而 `rerequested` 操作则请求你对存储库中已经存在的代码重新运行检查。由于 `requested` 和 `rerequested` 操作都需要创建检查运行,因此你将调用名为 `create_check_run` 的帮助程序。现在我们来编写该方法。 ## 步骤 1.3. 创建检查运行 -如果希望其他路由也使用此新方法,请将其添加为 [Sinatra 帮助程序](https://github.com/sinatra/sinatra#helpers)。 在 `helpers do` 下,添加此 `create_check_run` 方法: +如果希望其他路由也使用此新方法,请将其添加为 [Sinatra 帮助程序](https://github.com/sinatra/sinatra#helpers)。在 `helpers do` 下,添加此 `create_check_run` 方法: ``` ruby # Create a new check run with the status queued @@ -162,13 +162,13 @@ end 此代码使用 [create_check_run 方法](https://rdoc.info/gems/octokit/Octokit%2FClient%2FChecks:create_check_run)调用“[创建检查运行](/rest/reference/checks#create-a-check-run)”终结点。 -若要创建检查运行,只需要两个输入参数:`name` 和 `head_sha`。 在本快速入门中的稍后部分,我们将使用 [RuboCop](https://rubocop.readthedocs.io/en/latest/) 来实现 CI 测试,这就是在此处使用名称“Octo RuboCop”的原因,但是你可以为检查运行选择任何想用的名称。 +若要创建检查运行,只需要两个输入参数:`name` 和 `head_sha`。在本快速入门中的稍后部分,我们将使用 [RuboCop](https://rubocop.readthedocs.io/en/latest/) 来实现 CI 测试,这就是在此处使用名称“Octo RuboCop”的原因,但是你可以为检查运行选择任何想用的名称。 -您现在仅提供必需的参数以使基本功能正常工作,但是稍后您将在收集有关检查运行的更多信息时更新检查运行。 默认情况下,GitHub 将 `status` 设置为 `queued`。 +您现在仅提供必需的参数以使基本功能正常工作,但是稍后您将在收集有关检查运行的更多信息时更新检查运行。默认情况下,GitHub 将 `status` 设置为 `queued`。 -GitHub 为特定的提交 SHA 创建检查运行,因此 `head_sha` 是必需参数。 您可以在 web 挂钩有效负载中找到提交 SHA。 虽然现在你只为 `check_suite` 事件创建检查运行,但最好知道 `head_sha` 包含在事件有效负载中的 `check_suite` 和 `check_run` 对象中。 +GitHub 为特定的提交 SHA 创建检查运行,因此 `head_sha` 是必需参数。您可以在 web 挂钩有效负载中找到提交 SHA。虽然现在你只为 `check_suite` 事件创建检查运行,但最好知道 `head_sha` 包含在事件有效负载中的 `check_suite` 和 `check_run` 对象中。 -在上面的代码中,你将使用[三元运算符](https://ruby-doc.org/core-2.3.0/doc/syntax/control_expressions_rdoc.html#label-Ternary+if)(其工作原理类似于 `if/else` 语句)来检查有效负载是否包含 `check_run` 对象。 如果包含,你将从 `check_run` 对象中读取 `head_sha`,否则从 `check_suite` 对象中读取。 +在上面的代码中,你将使用[三元运算符](https://ruby-doc.org/core-2.3.0/doc/syntax/control_expressions_rdoc.html#label-Ternary+if)(其工作原理类似于 `if/else` 语句)来检查有效负载是否包含 `check_run` 对象。如果包含,你将从 `check_run` 对象中读取 `head_sha`,否则从 `check_suite` 对象中读取。 要测试此代码,请从您的终端重启服务器: @@ -178,19 +178,19 @@ $ ruby template_server.rb {% data reusables.apps.sinatra_restart_instructions %} -现在,在安装应用程序的仓库中打开拉取请求。 您的应用程序应该通过对拉取请求创建检查运行来响应。 单击“检查”选项卡,应该会看到如下所示的内容: +现在,在安装应用程序的仓库中打开拉取请求。您的应用程序应该通过对拉取请求创建检查运行来响应。单击“检查”选项卡,应该会看到如下所示的内容: ![排队检查运行](/assets/images/github-apps/github_apps_queued_check_run.png) 如果在“检查”选项卡中看到其他应用,这意味着已在存储库上安装了其他应用,这些应用对检查具有“读取与写入”访问权限,并订阅了“检查套件”和“检查运行”事件。 -很好! 您已告诉 GitHub 创建检查运行。 你可以在黄色图标旁边看到检查运行状态设置为 `queued`。 接下来,您需要等待 GitHub 创建检查运行并更新其状态。 +很好!您已告诉 GitHub 创建检查运行。你可以在黄色图标旁边看到检查运行状态设置为 `queued`。接下来,您需要等待 GitHub 创建检查运行并更新其状态。 ## 步骤 1.4. 更新检查运行 -当 `create_check_run` 方法运行时,它会要求 GitHub 创建新的检查运行。 GitHub 创建完检查运行后,你将收到包含 `created` 操作的 `check_run` Webhook 事件。 该事件是您开始运行检查的信号。 +当 `create_check_run` 方法运行时,它会要求 GitHub 创建新的检查运行。GitHub 创建完检查运行后,你将收到包含 `created` 操作的 `check_run` Webhook 事件。该事件是您开始运行检查的信号。 -你需要更新事件处理程序以查找 `created` 操作。 在更新事件处理程序时,可以为 `rerequested` 操作添加条件。 当用户通过单击“重新运行”按钮在 GitHub 上重新运行单个测试时,GitHub 会将 `rerequested` 检查运行事件发送到你的应用。 当检查运行为 `rerequested` 时,你需要重新启动整个过程并创建新的检查运行。 +你需要更新事件处理程序以查找 `created` 操作。在更新事件处理程序时,可以为 `rerequested` 操作添加条件。当用户通过单击“重新运行”按钮在 GitHub 上重新运行单个测试时,GitHub 会将 `rerequested` 检查运行事件发送到你的应用。当检查运行为 `rerequested` 时,你需要重新启动整个过程并创建新的检查运行。 若要在 `post '/event_handler'` 路由中包含 `check_run` 事件的条件,请在 `case request.env['HTTP_X_GITHUB_EVENT']` 下添加以下代码: @@ -207,13 +207,13 @@ when 'check_run' end ``` -GitHub 会将 `created` 检查运行的所有事件发送到存储库中安装的每个具有必要检查权限的应用。 这意味着您的应用程序将收到其他应用程序创建的检查运行。 `created` 检查运行与 `requested` 或 `rerequested` 检查套件略有不同,GitHub 仅会将这两个套件发送到请求运行检查的应用。 上面的代码查找检查运行的应用程序 ID。 这将过滤掉仓库中其他应用程序的所有检查运行。 +GitHub 会将 `created` 检查运行的所有事件发送到存储库中安装的每个具有必要检查权限的应用。这意味着您的应用程序将收到其他应用程序创建的检查运行。 `created` 检查运行与 `requested` 或 `rerequested` 检查套件略有不同,GitHub 仅会将这两个套件发送到请求运行检查的应用。上面的代码查找检查运行的应用程序 ID。这将过滤掉仓库中其他应用程序的所有检查运行。 接下来,你将编写 `initiate_check_run` 方法,你将在其中更新检查运行状态并准备开始 CI 测试。 -在本部分中,你尚未开始 CI 测试,但将逐步了解如何将检查运行的状态从 `queued` 更新为 `pending`,然后从 `pending` 更新为 `completed` 以查看检查运行的总体流。 在“[第 2 部分:创建 Octo RuboCop CI 测试](#part-2-creating-the-octo-rubocop-ci-test)”中,将添加实际执行 CI 测试的代码。 +在本部分中,你尚未开始 CI 测试,但将逐步了解如何将检查运行的状态从 `queued` 更新为 `pending`,然后从 `pending` 更新为 `completed` 以查看检查运行的总体流。在“[第 2 部分:创建 Octo RuboCop CI 测试](#part-2-creating-the-octo-rubocop-ci-test)”中,将添加实际执行 CI 测试的代码。 -我们来创建 `initiate_check_run` 方法并更新检查运行的状态。 将以下代码添加到小助手部分: +我们来创建 `initiate_check_run` 方法并更新检查运行的状态。将以下代码添加到小助手部分: ``` ruby # Start the CI process @@ -244,23 +244,23 @@ end 上述代码使用 [`update_check_run` Octokit 方法](https://rdoc.info/gems/octokit/Octokit%2FClient%2FChecks:update_check_run)调用“[更新检查运行](/rest/reference/checks#update-a-check-run)”API 终结点,以更新已创建的检查运行。 -以下是此代码的作用。 首先,它会将检查运行的状态更新为 `in_progress`,并将 `started_at` 时间隐式设置为当前时间。 在本快速入门的[第 2 部分](#part-2-creating-the-octo-rubocop-ci-test)中,你将添加代码以在 `***** RUN A CI TEST *****` 下启动真正的 CI 测试。 现在,您将该部分保留为占位符,因此后面的代码将模拟 CI 流程成功并且所有测试都通过。 最后,代码会将检查运行的状态再次更新为 `completed`。 +以下是此代码的作用。首先,它会将检查运行的状态更新为 `in_progress`,并将 `started_at` 时间隐式设置为当前时间。在本快速入门的[第 2 部分](#part-2-creating-the-octo-rubocop-ci-test)中,你将添加代码以在 `***** RUN A CI TEST *****` 下启动真正的 CI 测试。现在,您将该部分保留为占位符,因此后面的代码将模拟 CI 流程成功并且所有测试都通过。最后,代码会将检查运行的状态再次更新为 `completed`。 -你将在“[更新检查运行](/rest/reference/checks#update-a-check-run)”文档中注意到,当你提供状态 `completed` 时,`conclusion` 参数和 `completed_at` 参数为必需参数。 `conclusion` 汇总了检查运行的结果,可以是 `success`、`failure`、`neutral`、`cancelled`、`timed_out` 或 `action_required`。 你要将结论设置为 `success`、将 `completed_at` 时间设置为当前时间并将状态设置为 `completed`。 +你将在“[更新检查运行](/rest/reference/checks#update-a-check-run)”文档中注意到,当你提供状态 `completed` 时,`conclusion` 参数和 `completed_at` 参数为必需参数。 `conclusion` 汇总了检查运行的结果,可以是 `success`、`failure`、`neutral`、`cancelled`、`timed_out` 或 `action_required`。你要将结论设置为 `success`、将 `completed_at` 时间设置为当前时间并将状态设置为 `completed`。 -您还可以提供有关检查操作的更多详细信息,但这些内容将在下一部分进行介绍。 让我们通过重新运行 `template_server.rb` 来再次测试此代码: +您还可以提供有关检查操作的更多详细信息,但这些内容将在下一部分进行介绍。让我们通过重新运行 `template_server.rb` 来再次测试此代码: ```shell $ ruby template_server.rb ``` -转到打开的拉取请求,然后单击“检查”选项卡。单击左上角的“全部重新运行”按钮。 应该会看到检查运行从 `pending` 移到 `in_progress` 并以 `success` 结束: +转到打开的拉取请求,然后单击“检查”选项卡。单击左上角的“全部重新运行”按钮。应该会看到检查运行从 `pending` 移到 `in_progress` 并以 `success` 结束: ![完整的检查运行](/assets/images/github-apps/github_apps_complete_check_run.png) -## 第 2 部分。 创建 Octo RuboCop CI 测试 +## 第 2 部分。创建 Octo RuboCop CI 测试 -[RuboCop](https://rubocop.readthedocs.io/en/latest/) 是一个 Ruby 代码 Linter 和格式化程序。 它会检查 Ruby 代码,以确保它符合“[Ruby 样式指南](https://github.com/rubocop-hq/ruby-style-guide)”。 RuboCop 有三个主要功能: +[RuboCop](https://rubocop.readthedocs.io/en/latest/) 是一个 Ruby 代码 Linter 和格式化程序。它会检查 Ruby 代码,以确保它符合“[Ruby 样式指南](https://github.com/rubocop-hq/ruby-style-guide)”。RuboCop 有三个主要功能: * 分析检查代码样式 * 代码格式设置 @@ -272,11 +272,11 @@ $ ruby template_server.rb 检查 API 允许您报告关于每个检查运行的丰富细节,包括状态、图像、摘要、注释和请求的操作。 -注释是关于仓库中特定代码行的信息。 注释允许您精确定位和可视化要显示其他信息的代码确切部分。 这些信息可以是任何内容:例如,注释、错误或警告。 本快速入门使用注释来可视化 RuboCop 错误。 +注释是关于仓库中特定代码行的信息。注释允许您精确定位和可视化要显示其他信息的代码确切部分。这些信息可以是任何内容:例如,注释、错误或警告。本快速入门使用注释来可视化 RuboCop 错误。 -为了利用请求的操作,应用开发人员可以在拉取请求的“检查”选项卡中创建按钮。 当有人单击其中一个按钮时,单击会向 GitHub 应用发送一个 `requested_action``check_run` 事件。 应用程序执行的操作完全由应用程序开发者配置。 此快速入门将引导您添加一个按钮,允许用户请求 RuboCop 修复它发现的错误。 RuboCop 支持使用命令行选项自动修复错误,你将配置 `requested_action` 以利用此选项。 +为了利用请求的操作,应用开发人员可以在拉取请求的“检查”选项卡中创建按钮。当有人单击其中一个按钮时,单击会向 GitHub 应用发送一个 `requested_action``check_run` 事件。应用程序执行的操作完全由应用程序开发者配置。此快速入门将引导您添加一个按钮,允许用户请求 RuboCop 修复它发现的错误。RuboCop 支持使用命令行选项自动修复错误,你将配置 `requested_action` 以利用此选项。 -让我们开始吧! 以下是您将在本部分中完成的步骤: +让我们开始吧!以下是您将在本部分中完成的步骤: 1. [添加 Ruby 文件](#step-21-adding-a-ruby-file) 1. [克隆存储库](#step-22-cloning-the-repository) @@ -288,7 +288,7 @@ $ ruby template_server.rb ## 步骤 2.1. 添加 Ruby 文件 -您可以传递特定文件或整个目录供 RuboCop 检查。 在本快速入门中,您将在整个目录上运行 RuboCop。 由于 RuboCop 只检查 Ruby 代码,因此您的仓库中至少需要一个含有错误的 Ruby 文件。 下面提供的示例文件包含一些错误。 将此示例 Ruby 文件添加到安装应用的存储库(确保使用 `.rb` 扩展名命名文件,如 `myfile.rb` 所示): +您可以传递特定文件或整个目录供 RuboCop 检查。在本快速入门中,您将在整个目录上运行 RuboCop。由于 RuboCop 只检查 Ruby 代码,因此您的仓库中至少需要一个含有错误的 Ruby 文件。下面提供的示例文件包含一些错误。将此示例 Ruby 文件添加到安装应用的存储库(确保使用 `.rb` 扩展名命名文件,如 `myfile.rb` 所示): ```ruby # The Octocat class tells you about different breeds of Octocat @@ -312,15 +312,15 @@ m.display ## 步骤 2.2. 克隆存储库 -RuboCop 可用作命令行实用工具。 这意味着您的 GitHub 应用程序将需要克隆 CI 服务器上仓库的本地副本,以便 RuboCop 可以解析文件。 若要在 Ruby 应用中运行 Git 操作,可以使用 [ruby-git](https://github.com/ruby-git/ruby-git) gem。 +RuboCop 可用作命令行实用工具。这意味着您的 GitHub 应用程序将需要克隆 CI 服务器上仓库的本地副本,以便 RuboCop 可以解析文件。若要在 Ruby 应用中运行 Git 操作,可以使用 [ruby-git](https://github.com/ruby-git/ruby-git) gem。 -`building-a-checks-api-ci-server` 存储库中的 `Gemfile` 已包含 ruby-git gem,它是在[先决条件步骤](#prerequisites)中运行 `bundle install` 时安装的。 若要使用该 gem,请将此代码添加到 `template_server.rb` 文件顶部: +`building-a-checks-api-ci-server` 存储库中的 `Gemfile` 已包含 ruby-git gem,它是在[先决条件步骤](#prerequisites)中运行 `bundle install` 时安装的。若要使用该 gem,请将此代码添加到 `template_server.rb` 文件顶部: ``` ruby require 'git' ``` -您的应用程序需要“仓库内容”的读取权限才能克隆仓库。 在本快速入门后面的部分,您需要将内容推送到 GitHub,这需要写入权限。 现在将应用的“存储库内容”权限设置为“读取和写入”,这样以后就不需要再更新它了。 要更新应用程序的权限: +您的应用程序需要“仓库内容”的读取权限才能克隆仓库。在本快速入门后面的部分,您需要将内容推送到 GitHub,这需要写入权限。现在将应用的“存储库内容”权限设置为“读取和写入”,这样以后就不需要再更新它了。要更新应用程序的权限: 1. 从[应用设置页](https://github.com/settings/apps)中选择应用,然后单击边栏中的“权限和 Webhook”。 1. 在“权限”部分,找到“存储库内容”,然后在旁边的“访问权限”下拉列表中选择“读取和写入”。 @@ -332,9 +332,9 @@ require 'git' git clone https://x-access-token:@github.com//.git ``` -上面的代码通过 HTTP 克隆仓库。 它需要完整的仓库名称,其中包括仓库所有者(用户或组织)和仓库名称。 例如,[octocat Hello-World](https://github.com/octocat/Hello-World) 存储库的全名为 `octocat/hello-world`。 +上面的代码通过 HTTP 克隆仓库。它需要完整的仓库名称,其中包括仓库所有者(用户或组织)和仓库名称。例如,[octocat Hello-World](https://github.com/octocat/Hello-World) 存储库的全名为 `octocat/hello-world`。 -你的应用在克隆存储库后,需要拉取最新的代码更改并签出特定的 Git ref。执行所有这些操作的代码将很好地融入其自己的方法中。 要执行这些操作,该方法需要仓库的名称和全名以及要检出的 ref。 Ref 可以是提交 SHA、分支或标记。 将以下新方法添加到 `template_server.rb` 中的帮助程序方法部分: +你的应用在克隆存储库后,需要拉取最新的代码更改并签出特定的 Git ref。执行所有这些操作的代码将很好地融入其自己的方法中。要执行这些操作,该方法需要仓库的名称和全名以及要检出的 ref。Ref 可以是提交 SHA、分支或标记。将以下新方法添加到 `template_server.rb` 中的帮助程序方法部分: ``` ruby # Clones the repository to the current working directory, updates the @@ -353,11 +353,11 @@ def clone_repository(full_repo_name, repository, ref) end ``` -上面的代码通过应用的安装令牌使用 `ruby-git` gem 来克隆存储库。 此代码将在与 `template_server.rb` 相同的目录中克隆代码。 要在仓库中运行 Git 命令,代码需要更改为仓库目录。 在更改目录之前,代码将当前工作目录存储在变量 (`pwd`) 中,以便在退出 `clone_repository` 方法之前记住要返回的位置。 +上面的代码通过应用的安装令牌使用 `ruby-git` gem 来克隆存储库。此代码将在与 `template_server.rb` 相同的目录中克隆代码。要在仓库中运行 Git 命令,代码需要更改为仓库目录。在更改目录之前,代码将当前工作目录存储在变量 (`pwd`) 中,以便在退出 `clone_repository` 方法之前记住要返回的位置。 从存储库目录中,此代码提取和合并最新更改 (`@git.pull`),签出 ref (`@git.checkout(ref)`),然后将目录更改回原始工作目录 (`pwd`)。 -现在,你已获得克隆存储库并签出 ref 的方法。接下来,需要添加代码以获取所需的输入参数并调用新 `clone_repository` 方法。 在 `initiate_check_run` 帮助程序方法中的 `***** RUN A CI TEST *****` 注释下添加以下代码: +现在,你已获得克隆存储库并签出 ref 的方法。接下来,需要添加代码以获取所需的输入参数并调用新 `clone_repository` 方法。在 `initiate_check_run` 帮助程序方法中的 `***** RUN A CI TEST *****` 注释下添加以下代码: ``` ruby # ***** RUN A CI TEST ***** @@ -372,9 +372,9 @@ clone_repository(full_repo_name, repository, head_sha) ## 步骤 2.3. 运行 RuboCop -很好! 您正在克隆仓库并使用 CI 服务器创建检查运行。 现在,你将了解 [RuboCop Linter](https://docs.rubocop.org/rubocop/usage/basic_usage.html#code-style-checker) 和[检查 API 注释](/rest/reference/checks#create-a-check-run)的基本详细信息。 +很好!您正在克隆仓库并使用 CI 服务器创建检查运行。现在,你将了解 [RuboCop Linter](https://docs.rubocop.org/rubocop/usage/basic_usage.html#code-style-checker) 和[检查 API 注释](/rest/reference/checks#create-a-check-run)的基本详细信息。 -下面的代码运行 RuboCop 并以 JSON 格式保存样式代码错误。 将此代码添加到对[上一步](#step-22-cloning-the-repository)中添加的 `clone_repository` 的调用下方和用于更新检查运行使其完成操作的代码上方。 +下面的代码运行 RuboCop 并以 JSON 格式保存样式代码错误。将此代码添加到对[上一步](#step-22-cloning-the-repository)中添加的 `clone_repository` 的调用下方和用于更新检查运行使其完成操作的代码上方。 ``` ruby # Run RuboCop on all files in the repository @@ -384,23 +384,23 @@ logger.debug @report @output = JSON.parse @report ``` -上面的代码在仓库目录中的所有文件上运行 RuboCop 。 选项 `--format json` 是将 Lint 分析结果的副本保存为机器可解析格式的方便方法。 有关 JSON 格式的详细信息和示例,请参阅 [RuboCop 文档](https://docs.rubocop.org/rubocop/formatters.html#json-formatter)。 +上面的代码在仓库目录中的所有文件上运行 RuboCop。选项 `--format json` 是将 Lint 分析结果的副本保存为机器可解析格式的方便方法。有关 JSON 格式的详细信息和示例,请参阅 [RuboCop 文档](https://docs.rubocop.org/rubocop/formatters.html#json-formatter)。 -由于此代码将 RuboCop 结果存储在 `@report` 变量中,因此可以安全地移除存储库的签出。 此代码还会解析 JSON,因此你可以使用 `@output` 变量轻松访问 GitHub 应用中的键和值。 +由于此代码将 RuboCop 结果存储在 `@report` 变量中,因此可以安全地移除存储库的签出。此代码还会解析 JSON,因此你可以使用 `@output` 变量轻松访问 GitHub 应用中的键和值。 {% note %} -注意:无法撤消用于移除存储库 (`rm -rf`) 的命令。 请参阅[步骤 2.7. 安全提示](#step-27-security-tips),了解如何检查 Webhook 中是否注入了可用于移除与应用预期不同的目录的恶意命令。 例如,如果一个恶意行为者发送了一个存储库名称为 `./` 的 Webhook,你的应用将会移除根目录。 😱如果你出于某种原因未使用方法 `verify_webhook_signature`(包含在 `template_server.rb`)验证 Webhook 的发送方,请确保检查存储库名称是否有效。 +注意:无法撤消用于移除存储库 (`rm -rf`) 的命令。请参阅[步骤 2.7. 安全提示](#step-27-security-tips),了解如何检查 Webhook 中是否注入了可用于移除与应用预期不同的目录的恶意命令。例如,如果一个恶意行为者发送了一个存储库名称为 `./` 的 Webhook,你的应用将会移除根目录。 😱如果你出于某种原因未使用方法 `verify_webhook_signature`(包含在 `template_server.rb`)验证 Webhook 的发送方,请确保检查存储库名称是否有效。 {% endnote %} -您可以测试此代码是否有效,并在服务器的调试输出中查看 RuboCop 报告的错误。 再次启动 `template_server.rb` 服务器,并在测试应用的存储库中创建新的拉取请求: +您可以测试此代码是否有效,并在服务器的调试输出中查看 RuboCop 报告的错误。再次启动 `template_server.rb` 服务器,并在测试应用的存储库中创建新的拉取请求: ```shell $ ruby template_server.rb ``` -您应该在调试输出中看到分析错误,尽管它们不是用格式打印的。 你可以使用 [JSON 格式化程序](https://jsonformatter.org/)之类的 Web 工具来格式化 JSON 输出,例如以下格式化的 Lint 分析错误输出: +您应该在调试输出中看到分析错误,尽管它们不是用格式打印的。你可以使用 [JSON 格式化程序](https://jsonformatter.org/)之类的 Web 工具来格式化 JSON 输出,例如以下格式化的 Lint 分析错误输出: ```json { @@ -458,15 +458,15 @@ $ ruby template_server.rb ## 步骤 2.4. 收集 RuboCop 错误 -`@output` 变量包含 RuboCop 报告的已解析 JSON 结果。 如上所示,结果包含 `summary` 部分,你的代码可使用它快速确定是否存在错误。 如果没有报告错误,以下代码会将检查运行结论设置为 `success`。 RuboCop 会报告 `files` 数组中每个文件的错误,如果存在错误,你需要从文件对象中提取一些数据。 +`@output` 变量包含 RuboCop 报告的已解析 JSON 结果。如上所示,结果包含 `summary` 部分,你的代码可使用它快速确定是否存在错误。如果没有报告错误,以下代码会将检查运行结论设置为 `success`。RuboCop 会报告 `files` 数组中每个文件的错误,如果存在错误,你需要从文件对象中提取一些数据。 -检查 API 允许您为特定代码行创建注释。 创建或更新检查运行时,可以添加注释。 在本快速入门中,你将使用注释[更新检查运行](/rest/reference/checks#update-a-check-run)。 +检查 API 允许您为特定代码行创建注释。创建或更新检查运行时,可以添加注释。在本快速入门中,你将使用注释[更新检查运行](/rest/reference/checks#update-a-check-run)。 -检查 API 将注释数量限制为每个 API 请求最多 50 个注释。 若要创建 50 个以上的注释,必须向[更新检查运行](/rest/reference/checks#update-a-check-run)终结点发出多个请求。 例如,若要创建 105 个注释,需要调用[更新检查运行](/rest/reference/checks#update-a-check-run)终结点三次。 前两个请求各有 50 个注释,第三个请求将包括其余五个注释。 每次更新检查运行时,注释都会添加到已经存在的检查运行注释列表中。 +检查 API 将注释数量限制为每个 API 请求最多 50 个注释。若要创建 50 个以上的注释,必须向[更新检查运行](/rest/reference/checks#update-a-check-run)终结点发出多个请求。例如,若要创建 105 个注释,需要调用[更新检查运行](/rest/reference/checks#update-a-check-run)终结点三次。前两个请求各有 50 个注释,第三个请求将包括其余五个注释。每次更新检查运行时,注释都会添加到已经存在的检查运行注释列表中。 -检查运行会将注释作为对象数组。 每个注释对象必须包含 `path`、`start_line`、`end_line`、`annotation_level` 和 `message`。 RuboCop 还提供了 `start_column` 和 `end_column`,因此你可以在注释中包含这些可选参数。 注释仅在同一行中支持 `start_column` 和 `end_column`。 有关详细信息,请参阅 [`annotations` 对象](/rest/reference/checks#annotations-object-1)。 +检查运行会将注释作为对象数组。每个注释对象必须包含 `path`、`start_line`、`end_line`、`annotation_level` 和 `message`。RuboCop 还提供了 `start_column` 和 `end_column`,因此你可以在注释中包含这些可选参数。注释仅在同一行中支持 `start_column` 和 `end_column`。有关详细信息,请参阅 [`annotations` 对象](/rest/reference/checks#annotations-object-1)。 -您将从 RuboCop 中提取创建每个注释所需的信息。 将以下代码追加到在[上一部分](#step-23-running-rubocop)中添加的代码: +您将从 RuboCop 中提取创建每个注释所需的信息。将以下代码追加到在[上一部分](#step-23-running-rubocop)中添加的代码: ``` ruby annotations = [] @@ -521,21 +521,21 @@ else end ``` -此代码将注释总数限制为 50。 但是,您可以修改此代码以更新每批 50 个注释的检查运行。 上面的代码包含变量 `max_annotations`,它将限制设置为 50,该限制在循环中循环访问超限问题。 +此代码将注释总数限制为 50。但是,您可以修改此代码以更新每批 50 个注释的检查运行。上面的代码包含变量 `max_annotations`,它将限制设置为 50,该限制在循环中循环访问超限问题。 -如果 `offense_count` 为零,则 CI 测试为 `success`。 如果存在错误,此代码会将结论设置为 `neutral`,以防止严格执行来自代码语法检查的错误。 但如果你想确保检查套件在发现分析错误时失败,可以将结论更改为 `failure`。 +如果 `offense_count` 为零,则 CI 测试为 `success`。如果存在错误,此代码会将结论设置为 `neutral`,以防止严格执行来自代码语法检查的错误。但如果你想确保检查套件在发现分析错误时失败,可以将结论更改为 `failure`。 -当报告错误时,上面的代码将循环访问 RuboCop 报告中的 `files` 数组。 对于每个文件,它会提取文件路径,并将注释级别设置为 `notice`。 你可以更进一步,为每种 [RuboCop Cop](https://docs.rubocop.org/rubocop/cops.html) 类型设置特定的警告等级,但本快速入门为了简单起见,所有错误都设置为 `notice` 级别。 +当报告错误时,上面的代码将循环访问 RuboCop 报告中的 `files` 数组。对于每个文件,它会提取文件路径,并将注释级别设置为 `notice`。你可以更进一步,为每种 [RuboCop Cop](https://docs.rubocop.org/rubocop/cops.html) 类型设置特定的警告等级,但本快速入门为了简单起见,所有错误都设置为 `notice` 级别。 -此代码还会循环访问 `offenses` 数组中的每个错误,并收集超限的位置和错误消息。 提取所需的信息后,代码将为每个错误创建一个注释,并将其存储在 `annotations` 数组中。 由于注释仅在同一行上支持起始列和结束列,因此 `start_column` 和 `end_column` 仅在开始和结束行值相同时才会添加到 `annotation` 对象。 +此代码还会循环访问 `offenses` 数组中的每个错误,并收集超限的位置和错误消息。提取所需的信息后,代码将为每个错误创建一个注释,并将其存储在 `annotations` 数组中。由于注释仅在同一行上支持起始列和结束列,因此 `start_column` 和 `end_column` 仅在开始和结束行值相同时才会添加到 `annotation` 对象。 -此代码尚未为检查运行创建注释。 您将在下一节中添加该代码。 +此代码尚未为检查运行创建注释。您将在下一节中添加该代码。 ## 步骤 2.5. 使用 CI 测试结果更新检查运行 -从 GitHub 运行的每次检查都包含一个 `output` 对象,该对象包括 `title`、`summary`、`text`、`annotations` 和 `images`。 `summary` 和 `title` 是 `output` 仅有的必需参数,但仅有这些参数无法提供太多详细信息,因此本快速入门还添加了 `text` 和 `annotations`。 此处的代码没有添加图片,但是您可以根据需要随意添加! +从 GitHub 运行的每次检查都包含一个 `output` 对象,该对象包括 `title`、`summary`、`text`、`annotations` 和 `images`。 `summary` 和 `title` 是 `output` 仅有的必需参数,但仅有这些参数无法提供太多详细信息,因此本快速入门还添加了 `text` 和 `annotations`。此处的代码没有添加图片,但是您可以根据需要随意添加! -对于 `summary`,此示例使用 RuboCop 中的摘要信息,并添加了一些换行符 (`\n`) 来设置输出格式。 你可以自定义要添加到 `text` 参数的内容,但此示例将 `text` 参数设置为 RuboCop 版本。 若要设置 `summary` 和 `text`,请将此代码追加到[上一部分中](#step-24-collecting-rubocop-errors)添加的代码: +对于 `summary`,此示例使用 RuboCop 中的摘要信息,并添加了一些换行符 (`\n`) 来设置输出格式。你可以自定义要添加到 `text` 参数的内容,但此示例将 `text` 参数设置为 RuboCop 版本。若要设置 `summary` 和 `text`,请将此代码追加到[上一部分中](#step-24-collecting-rubocop-errors)添加的代码: ``` ruby # Updated check run summary and text parameters @@ -543,7 +543,7 @@ summary = "Octo RuboCop summary\n-Offense count: #{@output['summary']['offense_c text = "Octo RuboCop version: #{@output['metadata']['rubocop_version']}" ``` -现在您已经获得了更新检查运行所需的所有信息。 在[本快速入门的上半部分](#step-14-updating-a-check-run),你添加了此代码,将检查运行的状态设置为 `success`: +现在您已经获得了更新检查运行所需的所有信息。在[本快速入门的上半部分](#step-14-updating-a-check-run),你添加了此代码,将检查运行的状态设置为 `success`: ``` ruby # Mark the check run as complete! @@ -556,7 +556,7 @@ text = "Octo RuboCop version: #{@output['metadata']['rubocop_version']}" ) ``` -你需要更新该代码来使用根据 RuboCop 结果设置的 `conclusion` 变量(更新为 `success` 或 `neutral`)。 您可以使用以下内容更新代码: +你需要更新该代码来使用根据 RuboCop 结果设置的 `conclusion` 变量(更新为 `success` 或 `neutral`)。您可以使用以下内容更新代码: ``` ruby # Mark the check run as complete! And if there are warnings, share them. @@ -580,11 +580,11 @@ text = "Octo RuboCop version: #{@output['metadata']['rubocop_version']}" ) ``` -现在,您正在根据 CI 测试的状态设置结论,并且添加了 RuboCop 结果的输出,您已经创建了 CI 测试! 祝贺。 🙌 +现在,您正在根据 CI 测试的状态设置结论,并且添加了 RuboCop 结果的输出,您已经创建了 CI 测试!祝贺。 🙌 -上述代码还会通过 `actions` 对象向 CI 服务器添加一项功能,称为[请求的操作](https://developer.github.com/changes/2018-05-23-request-actions-on-checks/)。 {% ifversion fpt or ghec %}(请注意,这与 [GitHub Actions](/actions) 无关。){% endif %}请求的操作会在 GitHub 的“检查”选项卡中添加一个按钮,允许用户请求检查运行,从而执行其他操作。 附加操作完全由您的应用程序配置。 例如,由于 RuboCop 具有自动修复在 Ruby 代码中发现的错误的功能,因此您的 CI 服务器可以使用请求操作按钮来允许用户请求自动修复错误。 当有人单击该按钮时,应用会收到包含 `requested_action` 操作的 `check_run` 事件。 每个请求的操作都有一个 `identifier`,应用使用它来确定哪个按钮被单击。 +上述代码还会通过 `actions` 对象向 CI 服务器添加一项功能,称为[请求的操作](https://developer.github.com/changes/2018-05-23-request-actions-on-checks/)。 {% ifversion fpt or ghec %}(请注意,这与 [GitHub Actions](/actions) 无关。){% endif %}请求的操作会在 GitHub 的“检查”选项卡中添加一个按钮,允许用户请求检查运行,从而执行其他操作。附加操作完全由您的应用程序配置。例如,由于 RuboCop 具有自动修复在 Ruby 代码中发现的错误的功能,因此您的 CI 服务器可以使用请求操作按钮来允许用户请求自动修复错误。当有人单击该按钮时,应用会收到包含 `requested_action` 操作的 `check_run` 事件。每个请求的操作都有一个 `identifier`,应用使用它来确定哪个按钮被单击。 -上面的代码还没有让 RuboCop 自动修复错误。 您将在下一节中添加该功能。 但首先,我们通过再次启动 `template_server.rb` 服务器并创建一个新的拉取请求,看看刚刚创建的 CI 测试: +上面的代码还没有让 RuboCop 自动修复错误。您将在下一节中添加该功能。但首先,我们通过再次启动 `template_server.rb` 服务器并创建一个新的拉取请求,看看刚刚创建的 CI 测试: ```shell $ ruby template_server.rb @@ -604,24 +604,24 @@ $ ruby template_server.rb ## 步骤 2.6. 自动修复 RuboCop 错误 -如果您走到了这一步,为您点赞! 👏 你已经创建了 CI 测试。 在本节中,您将添加另外一个功能,即使用 RuboCop 自动修复它发现的错误。 你已在[上一部分](#step-25-updating-the-check-run-with-ci-test-results)中添加了“修复此问题”按钮。 现在,你将添加代码来处理有人单击“修复此问题”按钮时触发的 `requested_action` 检查运行事件。 +如果您走到了这一步,为您点赞! 👏 你已经创建了 CI 测试。在本节中,您将添加另外一个功能,即使用 RuboCop 自动修复它发现的错误。你已在[上一部分](#step-25-updating-the-check-run-with-ci-test-results)中添加了“修复此问题”按钮。现在,你将添加代码来处理有人单击“修复此问题”按钮时触发的 `requested_action` 检查运行事件。 -RuboCop 工具[提供](https://docs.rubocop.org/rubocop/usage/basic_usage.html#auto-correcting-offenses)了 `--auto-correct` 命令行选项,用于自动修复找到的错误。 使用 `--auto-correct` 功能时,更新将应用于服务器上的本地文件。 在 RuboCop 发挥作用之后,您需要将更改推送到 GitHub。 +RuboCop 工具[提供](https://docs.rubocop.org/rubocop/usage/basic_usage.html#auto-correcting-offenses)了 `--auto-correct` 命令行选项,用于自动修复找到的错误。使用 `--auto-correct` 功能时,更新将应用于服务器上的本地文件。在 RuboCop 发挥作用之后,您需要将更改推送到 GitHub。 -要推送到仓库,您的应用程序必须具备“仓库内容”的写入权限。 你已在[步骤 2.2. 克隆存储库](#step-22-cloning-the-repository)中将该权限设置回“读取与写入”,因此现在你已准备就绪。 +要推送到仓库,您的应用程序必须具备“仓库内容”的写入权限。你已在[步骤 2.2. 克隆存储库](#step-22-cloning-the-repository)中将该权限设置回“读取与写入”,因此现在你已准备就绪。 -为了提交文件,Git 必须知道哪个[用户名](/github/getting-started-with-github/setting-your-username-in-git/)和[电子邮件](/articles/setting-your-commit-email-address-in-git/)与提交相关联。 在 `.env` 文件中添加另外两个环境变量来存储名称 (`GITHUB_APP_USER_NAME`) 和电子邮件 (`GITHUB_APP_USER_EMAIL`) 设置。 您的名称可以是应用程序名称,电子邮件可以是您在本例中想使用的任何电子邮件地址。 例如: +为了提交文件,Git 必须知道哪个[用户名](/github/getting-started-with-github/setting-your-username-in-git/)和[电子邮件](/articles/setting-your-commit-email-address-in-git/)与提交相关联。在 `.env` 文件中添加另外两个环境变量来存储名称 (`GITHUB_APP_USER_NAME`) 和电子邮件 (`GITHUB_APP_USER_EMAIL`) 设置。您的名称可以是应用程序名称,电子邮件可以是您在本例中想使用的任何电子邮件地址。例如: ```ini GITHUB_APP_USER_NAME=Octoapp GITHUB_APP_USER_EMAIL=octoapp@octo-org.com ``` -使用作者和提交者的名称和电子邮件更新 `.env` 文件后,即可准备添加代码来读取环境变量并设置 Git 配置。 您很快就将添加该代码。 +使用作者和提交者的名称和电子邮件更新 `.env` 文件后,即可准备添加代码来读取环境变量并设置 Git 配置。您很快就将添加该代码。 当有人单击“修复此问题”按钮时,你的应用会收到包含 `requested_action` 操作类型的[检查运行 Webhook](/webhooks/event-payloads/#check_run)。 -在[步骤 1.4. 更新检查运行](#step-14-updating-a-check-run)中,已更新 `event_handler` 以在 `check_run` 事件中查找操作。 你已经有一个用于处理 `created` 和 `rerequested` 操作类型的 case 语句: +在[步骤 1.4. 更新检查运行](#step-14-updating-a-check-run)中,已更新 `event_handler` 以在 `check_run` 事件中查找操作。你已经有一个用于处理 `created` 和 `rerequested` 操作类型的 case 语句: ``` ruby when 'check_run' @@ -643,7 +643,7 @@ when 'requested_action' take_requested_action ``` -此代码调用将处理应用的所有 `requested_action` 事件的新方法。 将以下方法添加到代码的辅助方法部分: +此代码调用将处理应用的所有 `requested_action` 事件的新方法。将以下方法添加到代码的辅助方法部分: ``` ruby # Handles the check run `requested_action` event @@ -678,11 +678,11 @@ def take_requested_action end ``` -上面的代码将克隆存储库,就像你在[步骤 2.2. 克隆存储库](#step-22-cloning-the-repository)中添加的代码一样。 `if` 语句会检查所请求操作的标识符是否与 RuboCop 按钮标识符 (`fix_rubocop_notices`) 匹配。 如果它们匹配,代码将克隆存储库,设置 Git 用户名和电子邮件,并使用选项 `--auto-correct` 运行 RuboCop。 `--auto-correct` 选项会将更改自动应用于本地 CI 服务器文件。 +上面的代码将克隆存储库,就像你在[步骤 2.2. 克隆存储库](#step-22-cloning-the-repository)中添加的代码一样。 `if` 语句会检查所请求操作的标识符是否与 RuboCop 按钮标识符 (`fix_rubocop_notices`) 匹配。如果它们匹配,代码将克隆存储库,设置 Git 用户名和电子邮件,并使用选项 `--auto-correct` 运行 RuboCop。 `--auto-correct` 选项会将更改自动应用于本地 CI 服务器文件。 -文件在本地更改,但您仍然需要将它们推送到 GitHub。 你将再次使用方便的 `ruby-git` 的 gem 提交所有文件。 Git 有一个命令可以暂存所有已修改或删除的文件并提交它们:`git commit -a`。 若要使用 `ruby-git` 执行相同操作,上述代码将使用 `commit_all` 方法。 然后,代码使用与 Git `clone` 命令相同的身份验证方法,通过安装令牌将提交的文件推送到 GitHub。 最后,它删除仓库目录,以确保为下一个事件准备工作目录。 +文件在本地更改,但您仍然需要将它们推送到 GitHub。你将再次使用方便的 `ruby-git` 的 gem 提交所有文件。Git 有一个命令可以暂存所有已修改或删除的文件并提交它们:`git commit -a`。若要使用 `ruby-git` 执行相同操作,上述代码将使用 `commit_all` 方法。然后,代码使用与 Git `clone` 命令相同的身份验证方法,通过安装令牌将提交的文件推送到 GitHub。最后,它删除仓库目录,以确保为下一个事件准备工作目录。 -就这么简单! 您编写的代码现在完成了检查 API CI 服务器的构建。 💪 再次重启 `template_server.rb` 服务器并创建新的拉取请求: +就这么简单!您编写的代码现在完成了检查 API CI 服务器的构建。 💪 再次重启 `template_server.rb` 服务器并创建新的拉取请求: ```shell $ ruby template_server.rb @@ -692,7 +692,7 @@ $ ruby template_server.rb 现在,单击“修复此问题”按钮,自动修复 RuboCop 在“检查”选项卡中发现的错误。 -在“提交”选项卡中,你会看到由 Git 配置中设置的用户名提供的全新提交。 您可能需要刷新浏览器才能看到更新。 +在“提交”选项卡中,你会看到由 Git 配置中设置的用户名提供的全新提交。您可能需要刷新浏览器才能看到更新。 ![自动修复 Octo RuboCop 通知的新提交](/assets/images/github-apps/github_apps_new_requested_action_commit.png) @@ -704,7 +704,7 @@ $ ruby template_server.rb ## 步骤 2.7. 安全提示 -模板 GitHub 应用程序代码已经有方法来验证传入的 web 挂钩有效负载,以确保它们来自受信任的源。 如果不验证 web 挂钩有效负载,则需要确保当仓库名称包含在 web 挂钩有效负载中时,该 web 挂钩不包含可能被恶意使用的任意命令。 下面的代码将验证仅包含拉丁字母、连字符和下划线的仓库名称。 为了提供完整示例,本快速入门的[配套存储库`server.rb`中提供的完整 ](https://github.com/github-developer/creating-ci-tests-with-the-checks-api) 代码包括验证传入的 Webhook 有效负载的方法以及此项用于验证存储库名称的检查。 +模板 GitHub 应用程序代码已经有方法来验证传入的 web 挂钩有效负载,以确保它们来自受信任的源。如果不验证 web 挂钩有效负载,则需要确保当仓库名称包含在 web 挂钩有效负载中时,该 web 挂钩不包含可能被恶意使用的任意命令。下面的代码将验证仅包含拉丁字母、连字符和下划线的仓库名称。为了提供完整示例,本快速入门的[配套存储库`server.rb`中提供的完整 ](https://github.com/github-developer/creating-ci-tests-with-the-checks-api) 代码包括验证传入的 Webhook 有效负载的方法以及此项用于验证存储库名称的检查。 ``` ruby # This quickstart example uses the repository name in the webhook with @@ -720,11 +720,11 @@ end ## 故障排除 -以下是一些常见问题和一些建议的解决方案。 如果您遇到任何其他问题,可以在 {% data variables.product.prodname_support_forum_with_url %} 中寻求帮助或建议。 +以下是一些常见问题和一些建议的解决方案。如果您遇到任何其他问题,可以在 {% data variables.product.prodname_support_forum_with_url %} 中寻求帮助或建议。 -* 问:我的应用不将代码推送到 GitHub。 我没有看到 RuboCop 自动进行修复! +* 问:我的应用不将代码推送到 GitHub。我没有看到 RuboCop 自动进行修复! - 答:请确保对“存储库内容”拥有“读取与写入”权限,以及使用安装令牌克隆存储库。 请参阅[步骤 2.2. 克隆存储库](#step-22-cloning-the-repository)了解详细信息。 + 答:请确保对“存储库内容”拥有“读取与写入”权限,以及使用安装令牌克隆存储库。请参阅[步骤 2.2. 克隆存储库](#step-22-cloning-the-repository)了解详细信息。 * 问:我在与克隆存储库相关的 `template_server.rb` 调试输出中看到了错误。 @@ -746,7 +746,7 @@ end ## 结束语 -完成本指南后,您已经学会了使用检查 API 创建 CI 服务器的基础知识! 回顾一下: +完成本指南后,您已经学会了使用检查 API 创建 CI 服务器的基础知识!回顾一下: * 配置您的服务器来接收检查 API 事件并创建检查运行。 * 使用 RuboCop 来检查仓库中的代码并为错误创建注释。 @@ -756,5 +756,5 @@ end 以下是有关接下来可以做什么的一些想法: -* 目前,始终显示“Fix this(修复此问题)”按钮。 更新您编写的代码,仅在 RuboCop 发现错误时显示“Fix this(修复此问题)”按钮。 +* 目前,始终显示“Fix this(修复此问题)”按钮。更新您编写的代码,仅在 RuboCop 发现错误时显示“Fix this(修复此问题)”按钮。 * 如果你不希望 RuboCop 将文件直接提交到头部分支,你可以更新代码,以使用基于头部分支的新分支[创建拉取请求](/rest/reference/pulls#create-a-pull-request)。 diff --git a/translations/zh-CN/content/developers/apps/guides/using-content-attachments.md b/translations/zh-CN/content/developers/apps/guides/using-content-attachments.md index 409e56526644..d533fd5df99d 100644 --- a/translations/zh-CN/content/developers/apps/guides/using-content-attachments.md +++ b/translations/zh-CN/content/developers/apps/guides/using-content-attachments.md @@ -1,6 +1,6 @@ --- title: 使用内容附件 -intro: 内容附件允许 GitHub 应用程序在 GitHub 中为链接到注册域的 URL 提供更多信息。 GitHub 可渲染应用程序在正文或者议题或拉取请求注释中的 URL 下提供的信息。 +intro: 内容附件允许 GitHub 应用程序在 GitHub 中为链接到注册域的 URL 提供更多信息。GitHub 可渲染应用程序在正文或者议题或拉取请求注释中的 URL 下提供的信息。 redirect_from: - /apps/using-content-attachments - /developers/apps/using-content-attachments @@ -19,16 +19,16 @@ ms.locfileid: '147081021' ## 关于内容附件 -GitHub 应用可以注册将触发 `content_reference` 事件的域。 当有人在正文或者问题或拉取请求的注释中包含链接到注册域的 URL 时,应用会收到 [`content_reference` Webhook](/webhooks/event-payloads/#content_reference)。 您可以使用内容附件直观地为添加到议题或拉取请求的 URL 提供更多的上下文或数据。 URL 必须是完全限定的 URL,以 `http://` 或 `https://` 开头。 Markdown 链接中的 URL 将被忽略,不会触发 `content_reference` 事件。 +GitHub 应用可以注册将触发 `content_reference` 事件的域。当有人在正文或者问题或拉取请求的注释中包含链接到注册域的 URL 时,应用会收到 [`content_reference` Webhook](/webhooks/event-payloads/#content_reference)。您可以使用内容附件直观地为添加到议题或拉取请求的 URL 提供更多的上下文或数据。URL 必须是完全限定的 URL,以 `http://` 或 `https://` 开头。Markdown 链接中的 URL 将被忽略,不会触发 `content_reference` 事件。 在使用 {% data variables.product.prodname_unfurls %} API 之前,您需要为 GitHub 应用程序配置内容引用: * 为应用提供对“内容引用”的 `Read & write` 权限。 -* 配置“内容引用”权限时,注册最多 5 个有效且可公开访问的域。 配置内容引用域时不要使用 IP 地址。 您可以注册域名 (example.com) 或子域 (subdomain.example.com)。 +* 配置“内容引用”权限时,注册最多 5 个有效且可公开访问的域。配置内容引用域时不要使用 IP 地址。您可以注册域名 (example.com) 或子域 (subdomain.example.com)。 * 让应用程序订阅“内容引用”事件。 -将应用程序安装到仓库中后,仓库中包含注册域 URL 的议题或拉取请求注释将生成内容引用事件。 应用程序必须在发布内容引用 URL 后六小时内创建内容附件。 +将应用程序安装到仓库中后,仓库中包含注册域 URL 的议题或拉取请求注释将生成内容引用事件。应用程序必须在发布内容引用 URL 后六小时内创建内容附件。 -内容附件不会追溯更新 URL。 只有在您根据上述要求配置了应用程序,并且有人在其仓库中安装应用程序之后,它才会更新添加到议题或拉取请求中的 URL。 +内容附件不会追溯更新 URL。只有在您根据上述要求配置了应用程序,并且有人在其仓库中安装应用程序之后,它才会更新添加到议题或拉取请求中的 URL。 有关配置 GitHub 应用权限和事件订阅所需的步骤,请参阅[创建 GitHub 应用](/apps/building-github-apps/creating-a-github-app/)或[编辑 GitHub 应用的权限](/apps/managing-github-apps/editing-a-github-app-s-permissions/)。 @@ -36,9 +36,9 @@ GitHub 应用可以注册将触发 `content_reference` 事件的域。 当有人 内容附件流程向你显示问题或拉取请求中的 URL、`content_reference` Webhook 事件以及使用额外信息更新问题或拉取请求所需调用的 REST API 终结点之间的关系: -**步骤 1.** 使用[关于内容附件](#about-content-attachments)中的指南设置应用。 你也可以根据 [Probot 应用示例](#example-using-probot-and-github-app-manifests)开始使用内容附件。 +**步骤 1.** 使用[关于内容附件](#about-content-attachments)中的指南设置应用。你也可以根据 [Probot 应用示例](#example-using-probot-and-github-app-manifests)开始使用内容附件。 -**步骤 2.** 将已注册的域的 URL 添加到问题或拉取请求。 必须使用以 `http://` 或 `https://` 开头的完全限定的 URL。 +**步骤 2.** 将已注册的域的 URL 添加到问题或拉取请求。必须使用以 `http://` 或 `https://` 开头的完全限定的 URL。 ![添加到议题的 URL](/assets/images/github-apps/github_apps_content_reference.png) @@ -63,7 +63,7 @@ GitHub 应用可以注册将触发 `content_reference` 事件的域。 当有人 } ``` -**步骤 4.** 应用使用 `content_reference` `id` 和 `repository` `full_name` 字段来通过 REST API [创建内容附件](/rest/reference/apps#create-a-content-attachment)。 还需要使用 `installation` `id` 作为 [GitHub 应用安装](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)进行身份验证。 +**步骤 4.** 应用使用 `content_reference` `id` 和 `repository` `full_name` 字段来通过 REST API [创建内容附件](/rest/reference/apps#create-a-content-attachment)。还需要使用 `installation` `id` 作为 [GitHub 应用安装](/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation)进行身份验证。 {% data reusables.pre-release-program.corsair-preview %} {% data reusables.pre-release-program.api-preview-warning %} @@ -126,12 +126,12 @@ curl -X "POST" "{% data variables.product.api_url_code %}/graphql" \ ## 使用 Probot 和 GitHub 应用程序清单的示例 -要快速设置可使用 {% data variables.product.prodname_unfurls %} API 的 GitHub 应用,你可以使用 [Probot](https://probot.github.io/)。 要了解 Probot 如何使用 GitHub 应用清单,请参阅[从清单创建 GitHub 应用](/apps/building-github-apps/creating-github-apps-from-a-manifest/)。 +要快速设置可使用 {% data variables.product.prodname_unfurls %} API 的 GitHub 应用,你可以使用 [Probot](https://probot.github.io/)。要了解 Probot 如何使用 GitHub 应用清单,请参阅[从清单创建 GitHub 应用](/apps/building-github-apps/creating-github-apps-from-a-manifest/)。 要创建 Probot 应用程序,请按照以下步骤操作: 1. [生成新的 GitHub 应用](https://probot.github.io/docs/development/#generating-a-new-app)。 -2. 打开你创建的项目,自定义 `app.yml` 文件中的设置。 订阅 `content_reference` 事件并启用 `content_references` 写入权限: +2. 打开你创建的项目,自定义 `app.yml` 文件中的设置。订阅 `content_reference` 事件并启用 `content_references` 写入权限: ``` yml default_events: @@ -171,7 +171,7 @@ curl -X "POST" "{% data variables.product.api_url_code %}/graphql" \ } ``` -4. [在本地运行 GitHub 应用](https://probot.github.io/docs/development/#running-the-app-locally)。 导航到 `http://localhost:3000`,并单击“注册 GitHub 应用”按钮: +4. [在本地运行 GitHub 应用](https://probot.github.io/docs/development/#running-the-app-locally)。导航到 `http://localhost:3000`,并单击“注册 GitHub 应用”按钮: ![注册 Probot GitHub 应用程序](/assets/images/github-apps/github_apps_probot-registration.png) diff --git a/translations/zh-CN/content/developers/apps/guides/using-the-github-api-in-your-app.md b/translations/zh-CN/content/developers/apps/guides/using-the-github-api-in-your-app.md index 93d7467201cf..a446a6bd4b07 100644 --- a/translations/zh-CN/content/developers/apps/guides/using-the-github-api-in-your-app.md +++ b/translations/zh-CN/content/developers/apps/guides/using-the-github-api-in-your-app.md @@ -22,7 +22,7 @@ ms.locfileid: '145085023' --- ## 简介 -本指南将帮助您构建 GitHub 应用程序并在服务器上运行它。 您构建的应用程序将为在安装该应用程序的仓库中所有打开的新议题添加标签。 +本指南将帮助您构建 GitHub 应用程序并在服务器上运行它。您构建的应用程序将为在安装该应用程序的仓库中所有打开的新议题添加标签。 此项目将引导您完成以下工作: @@ -43,7 +43,7 @@ ms.locfileid: '145085023' * [REST API](/rest) * [Sinatra](http://sinatrarb.com/) -但是,任何经验水平都能跟上步伐。 我们会一路提供所需信息的链接。 +但是,任何经验水平都能跟上步伐。我们会一路提供所需信息的链接。 在开始之前,您需要执行以下操作: @@ -54,7 +54,7 @@ ms.locfileid: '145085023' 在目录中,你将找到包含本快速入门将要使用的模板代码的 `template_server.rb` 文件以及包含已完成项目代码的 `server.rb` 文件。 -1. 按照[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)快速入门中的步骤来配置和运行 `template_server.rb` 应用服务器。 如果你以前完成了[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)以外的其他 GitHub 应用快速入门,你应该注册一个新 GitHub 应用并启动一个新 Smee 通道以用于本快速入门。 +1. 按照[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)快速入门中的步骤来配置和运行 `template_server.rb` 应用服务器。如果你以前完成了[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)以外的其他 GitHub 应用快速入门,你应该注册一个新 GitHub 应用并启动一个新 Smee 通道以用于本快速入门。 本快速入门包含与[设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)快速入门相同的 `template_server.rb` 代码。 **注意:** 遵循 [设置开发环境](/apps/quickstart-guides/setting-up-your-development-environment/)快速入门的同时,请确保使用 [在应用中使用 GitHub API](https://github.com/github-developer/using-the-github-api-in-your-app) 存储库中包含的项目文件。 @@ -64,13 +64,13 @@ ms.locfileid: '145085023' 现在你已经熟悉了 `template_server.rb` 代码,你将创建代码来将 `needs-response` 标签自动添加到安装该应用的存储库中的所有已打开问题。 -`template_server.rb` 文件包含尚未自定义的应用模板代码。 在本文件中,您将看到一些用于处理 web 挂钩事件的占位符代码,以及用于初始化 Octokit.rb 客户端的一些其他代码。 +`template_server.rb` 文件包含尚未自定义的应用模板代码。在本文件中,您将看到一些用于处理 web 挂钩事件的占位符代码,以及用于初始化 Octokit.rb 客户端的一些其他代码。 {% note %} -**注意:** `template_server.rb` 包含许多代码注释,可补充本指南并解释其他技术细节。 您可能会发现,在继续本节之前通读该文件中的注释以概要了解代码的工作方式,将对您大有帮助。 +**注意:** `template_server.rb` 包含许多代码注释,可补充本指南并解释其他技术细节。您可能会发现,在继续本节之前通读该文件中的注释以概要了解代码的工作方式,将对您大有帮助。 -你在本指南末尾创建的最终自定义代码位于 [`server.rb`](https://github.com/github-developer/using-the-github-api-in-your-app/blob/master/server.rb)。 不过,尽可能等到最后再查看它吧! +你在本指南末尾创建的最终自定义代码位于 [`server.rb`](https://github.com/github-developer/using-the-github-api-in-your-app/blob/master/server.rb)。不过,尽可能等到最后再查看它吧! {% endnote %} @@ -81,26 +81,26 @@ ms.locfileid: '145085023' 3. [创建新标签](#step-3-create-a-new-label) 4. [添加标签处理](#step-4-add-label-handling) -## 步骤 1。 更新应用权限 +## 步骤 1。更新应用权限 -如果你在[首次注册应用](/apps/quickstart-guides/setting-up-your-development-environment/#step-2-register-a-new-github-app)时接受了默认权限,则意味着你的应用无法访问大多数资源。 对于此示例,您的应用程序将需要读取议题和写入标签的权限。 +如果你在[首次注册应用](/apps/quickstart-guides/setting-up-your-development-environment/#step-2-register-a-new-github-app)时接受了默认权限,则意味着你的应用无法访问大多数资源。对于此示例,您的应用程序将需要读取议题和写入标签的权限。 要更新应用程序的权限: 1. 从[应用设置页](https://github.com/settings/apps)中选择应用,然后单击边栏中的“权限和 Webhook”。 -1. 在“权限”部分,找到“问题”,然后在其旁边的“访问权限”下拉列表中选择“读取和写入”。 说明中表示,此选项将授予对议题和标签的访问权限,而这正是您所需要的。 +1. 在“权限”部分,找到“问题”,然后在其旁边的“访问权限”下拉列表中选择“读取和写入”。说明中表示,此选项将授予对议题和标签的访问权限,而这正是您所需要的。 1. 在“订阅事件”部分,选择“问题”以订阅事件。 {% data reusables.apps.accept_new_permissions_steps %} -很好! 您的应用程序现在有权限执行所需的任务。 现在,您可以添加代码使其正常工作。 +很好!您的应用程序现在有权限执行所需的任务。现在,您可以添加代码使其正常工作。 ## 步骤 2. 添加事件处理 -应用程序需要做的第一件事是侦听打开的新议题。 现在你已订阅“问题”事件,你将开始接收 [`issues`](/webhooks/event-payloads/#issues) Webhook,它在发生某些与问题相关的操作时被触发。 您可以根据要在代码中执行的特定操作来过滤此事件类型。 +应用程序需要做的第一件事是侦听打开的新议题。现在你已订阅“问题”事件,你将开始接收 [`issues`](/webhooks/event-payloads/#issues) Webhook,它在发生某些与问题相关的操作时被触发。您可以根据要在代码中执行的特定操作来过滤此事件类型。 -GitHub 将 Webhook 有效负载作为 `POST` 请求发送。 因为你已将 Smee Webhook 有效负载转发到 `http://localhost/event_handler:3000`,因此服务器将在 `post '/event_handler'` 路由中接收 `POST` 请求有效负载。 +GitHub 将 Webhook 有效负载作为 `POST` 请求发送。因为你已将 Smee Webhook 有效负载转发到 `http://localhost/event_handler:3000`,因此服务器将在 `post '/event_handler'` 路由中接收 `POST` 请求有效负载。 -空 `post '/event_handler'` 路由已包含在你在[先决条件](#prerequisites)部分中下载的 `template_server.rb` 文件中。 空路由如下所示: +空 `post '/event_handler'` 路由已包含在你在[先决条件](#prerequisites)部分中下载的 `template_server.rb` 文件中。空路由如下所示: ``` ruby post '/event_handler' do @@ -124,9 +124,9 @@ when 'issues' end ``` -GitHub 发送的每个事件都包含一个名为 `HTTP_X_GITHUB_EVENT` 的请求标头,它指示 `POST` 请求中的事件类型。 现在,你只需关注 `issues` 事件类型。 每个事件都有一个附加的 `action` 字段,它指示触发事件的操作类型。 对于 `issues`,`action` 字段可以是 `assigned`、`unassigned`、`labeled`、`unlabeled`、`opened`、`edited`、`milestoned`、`demilestoned``closed` 或 `reopened`。 +GitHub 发送的每个事件都包含一个名为 `HTTP_X_GITHUB_EVENT` 的请求标头,它指示 `POST` 请求中的事件类型。现在,你只需关注 `issues` 事件类型。每个事件都有一个附加的 `action` 字段,它指示触发事件的操作类型。对于 `issues`,`action` 字段可以是 `assigned`、`unassigned`、`labeled`、`unlabeled`、`opened`、`edited`、`milestoned`、`demilestoned``closed` 或 `reopened`。 -要测试事件处理程序,请尝试添加临时辅助方法。 稍后将在[添加标签处理](#step-4-add-label-handling)时进行更新。 现在,在代码的 `helpers do` 部分中添加以下代码。 您可以将新方法放在其他任何辅助方法的上方或下方。 顺序无关紧要。 +要测试事件处理程序,请尝试添加临时辅助方法。稍后将在[添加标签处理](#step-4-add-label-handling)时进行更新。现在,在代码的 `helpers do` 部分中添加以下代码。您可以将新方法放在其他任何辅助方法的上方或下方。顺序无关紧要。 ``` ruby def handle_issue_opened_event(payload) @@ -134,25 +134,25 @@ def handle_issue_opened_event(payload) end ``` -此方法接收 JSON 格式的事件有效负载作为参数。 这意味着您可以解析方法中的有效负载并深入挖掘所需的任何特定数据。 你可能会发现在某个时候检查整个有效负载很有帮助:尝试将 `logger.debug 'An issue was opened!` 更改为 `logger.debug payload`。 你看到的有效负载结构应该与 [`issues` Webhook 事件文档中显示的](/webhooks/event-payloads/#issues)结构相匹配。 +此方法接收 JSON 格式的事件有效负载作为参数。这意味着您可以解析方法中的有效负载并深入挖掘所需的任何特定数据。你可能会发现在某个时候检查整个有效负载很有帮助:尝试将 `logger.debug 'An issue was opened!` 更改为 `logger.debug payload`。你看到的有效负载结构应该与 [`issues` Webhook 事件文档中显示的](/webhooks/event-payloads/#issues)结构相匹配。 -很好! 是时候测试更改了。 +很好!是时候测试更改了。 {% data reusables.apps.sinatra_restart_instructions %} -在浏览器中,访问安装应用程序的仓库。 在此仓库中打开一个新议题。 此议题可以谈论您喜欢的任何事情。 它仅用于测试。 +在浏览器中,访问安装应用程序的仓库。在此仓库中打开一个新议题。此议题可以谈论您喜欢的任何事情。它仅用于测试。 -回头查看终端时,你应该会在输出中看到一条消息:`An issue was opened!` 恭喜! 您已将事件处理程序添加到应用程序中。 💪 +回头查看终端时,你应该会在输出中看到一条消息:`An issue was opened!` 恭喜!您已将事件处理程序添加到应用程序中。 💪 ## 步骤 3. 创建新标签 -好,您的应用程序在有议题被打开时会告诉您。 现在,你希望它将标签 `needs-response` 添加到安装该应用的存储库中任何新打开的问题。 +好,您的应用程序在有议题被打开时会告诉您。现在,你希望它将标签 `needs-response` 添加到安装该应用的存储库中任何新打开的问题。 -将标签添加到任何位置之前,你需要在存储库中创建自定义标签 。 只需要这样做一次。 就本指南而言,请在 GitHub 上手动创建标签。 在存储库中,依次单击“问题”、“标签”和“新建标签” 。 将新标签命名为 `needs-response`。 +将标签添加到任何位置之前,你需要在存储库中创建自定义标签。只需要这样做一次。就本指南而言,请在 GitHub 上手动创建标签。在存储库中,依次单击“问题”、“标签”和“新建标签” 。将新标签命名为 `needs-response`。 {% tip %} -**提示:** 如果你的应用能够以编程方式创建标签,那岂不是很棒吗? [它可以](/rest/reference/issues#create-a-label)! 完成本指南中的步骤后,请尝试添加代码,自行实现。 +**提示:** 如果你的应用能够以编程方式创建标签,那岂不是很棒吗? [它可以](/rest/reference/issues#create-a-label)!完成本指南中的步骤后,请尝试添加代码,自行实现。 {% endtip %} @@ -160,9 +160,9 @@ end ## 步骤 4. 添加标签处理 -恭喜!您来到了最后一步:向应用程序添加标签处理。 要完成此任务,你需要使用 [Octokit.rb Ruby 库](http://octokit.github.io/octokit.rb/)。 +恭喜!您来到了最后一步:向应用程序添加标签处理。要完成此任务,你需要使用 [Octokit.rb Ruby 库](http://octokit.github.io/octokit.rb/)。 -在 Octokit.rb 文档中,找到[标签方法](http://octokit.github.io/octokit.rb/Octokit/Client/Labels.html)列表。 要使用的方法是 [`add_labels_to_an_issue`](http://octokit.github.io/octokit.rb/Octokit/Client/Labels.html#add_labels_to_an_issue-instance_method)。 +在 Octokit.rb 文档中,找到[标签方法](http://octokit.github.io/octokit.rb/Octokit/Client/Labels.html)列表。要使用的方法是 [`add_labels_to_an_issue`](http://octokit.github.io/octokit.rb/Octokit/Client/Labels.html#add_labels_to_an_issue-instance_method)。 返回 `template_server.rb`,找到之前定义的方法: @@ -178,7 +178,7 @@ end * 议题编号(整数) * 标签(数组) -您可以解析有效负载以获取仓库和议题编号。 由于标签名称始终相同 (`needs-response`),因此可以在标签数组中作为硬编码字符串传递它。 将这些片段放在一起,更新后的方法可能如下所示: +您可以解析有效负载以获取仓库和议题编号。由于标签名称始终相同 (`needs-response`),因此可以在标签数组中作为硬编码字符串传递它。将这些片段放在一起,更新后的方法可能如下所示: ``` ruby # When an issue is opened, add a label @@ -189,17 +189,17 @@ def handle_issue_opened_event(payload) end ``` -尝试在测试仓库中打开一个新议题,看看会发生什么! 如果没有任何反应,请尝试刷新。 +尝试在测试仓库中打开一个新议题,看看会发生什么!如果没有任何反应,请尝试刷新。 在终端中看不到太多信息,但是你应该看到机器人用户已向该问题添加了标签。 {% note %} -**注意:** 当 GitHub 应用通过 API 执行操作(例如添加标签)时,GitHub 会显示这些操作由机器人帐户执行。 有关详细信息,请参阅“[计算机与机器人帐户](/apps/differences-between-apps/#machine-vs-bot-accounts)”。 +**注意:** 当 GitHub 应用通过 API 执行操作(例如添加标签)时,GitHub 会显示这些操作由机器人帐户执行。有关详细信息,请参阅“[计算机与机器人帐户](/apps/differences-between-apps/#machine-vs-bot-accounts)”。 {% endnote %} -如果是,恭喜! 您已成功构建了一个可正常工作的应用程序! 🎉 +如果是,恭喜!您已成功构建了一个可正常工作的应用程序! 🎉 可以在[应用模板存储库](https://github.com/github-developer/using-the-github-api-in-your-app)中看到 `server.rb` 中的最终代码。 @@ -207,13 +207,13 @@ end ## 故障排除 -以下是一些常见问题和一些建议的解决方案。 如果您遇到任何其他问题,可以在 {% data variables.product.prodname_support_forum_with_url %} 中寻求帮助或建议。 +以下是一些常见问题和一些建议的解决方案。如果您遇到任何其他问题,可以在 {% data variables.product.prodname_support_forum_with_url %} 中寻求帮助或建议。 -* 问:我的服务器没有监听事件! Smee 客户端在终端窗口中运行,我通过打开新议题在 GitHub.com 上发送事件,但是在运行服务器的终端窗口中没有看到任何输出。 +* 问:我的服务器没有监听事件!Smee 客户端在终端窗口中运行,我通过打开新议题在 GitHub.com 上发送事件,但是在运行服务器的终端窗口中没有看到任何输出。 - 答:你的应用设置中可能没有正确的 Smee 域。 访问[应用设置页面](https://github.com/settings/apps)并仔细检查“[使用 GitHub 注册新应用](/apps/quickstart-guides/setting-up-your-development-environment/#step-2-register-a-new-github-app)”中显示的字段。 确保这些字段中的域与在[启动新的 Smee 通道](/apps/quickstart-guides/setting-up-your-development-environment/#step-1-start-a-new-smee-channel)中的 `smee -u ` 命令中使用的域相匹配。 + 答:你的应用设置中可能没有正确的 Smee 域。访问[应用设置页面](https://github.com/settings/apps)并仔细检查“[使用 GitHub 注册新应用](/apps/quickstart-guides/setting-up-your-development-environment/#step-2-register-a-new-github-app)”中显示的字段。确保这些字段中的域与在[启动新的 Smee 通道](/apps/quickstart-guides/setting-up-your-development-environment/#step-1-start-a-new-smee-channel)中的 `smee -u ` 命令中使用的域相匹配。 -* 问:我的应用无法运行! 我打开了一个新议题,但是即使刷新后也没有给它添加标签。 +* 问:我的应用无法运行!我打开了一个新议题,但是即使刷新后也没有给它添加标签。 答:请确保满足以下所有条件: @@ -225,7 +225,7 @@ end ## 结束语 -完成本指南后,您已了解开发 GitHub 应用程序的基本构建块! 回顾一下: +完成本指南后,您已了解开发 GitHub 应用程序的基本构建块!回顾一下: * 编程应用程序以侦听事件 * 使用 Octokit. rb 库执行 REST API 操作 @@ -239,6 +239,6 @@ end * 让应用检查问题中是否已存在 `needs-response` 标签,如果不存在,请添加它。 * 当机器人成功添加标签时,在终端中显示消息。 (提示:将 `needs-response` 标签 ID 与有效负载中的标签 ID 进行比较,以作为显示消息的条件,以便只有在添加相关标签时才显示消息,添加其他标签时则不显示。) * 向应用添加登陆页面并为它挂接 [Sinatra 路由](https://github.com/sinatra/sinatra#routes)。 -* 将代码移动到托管服务器(如 Heroku)。 不要忘记使用新域更新应用程序设置。 +* 将代码移动到托管服务器(如 Heroku)。不要忘记使用新域更新应用程序设置。 * 在 {% data variables.product.prodname_support_forum_with_url %}{% ifversion fpt or ghec %} 中分享项目或寻求建议 * 您是否构建了一款让人眼前一亮的新应用程序?您认为它可能对其他人有帮助? [将其添加到 GitHub 市场](/apps/marketplace/creating-and-submitting-your-app-for-approval/)!{% endif %} diff --git a/translations/zh-CN/content/developers/apps/managing-github-apps/editing-a-github-apps-permissions.md b/translations/zh-CN/content/developers/apps/managing-github-apps/editing-a-github-apps-permissions.md index 7514fd3b73e6..31c851cbf905 100644 --- a/translations/zh-CN/content/developers/apps/managing-github-apps/editing-a-github-apps-permissions.md +++ b/translations/zh-CN/content/developers/apps/managing-github-apps/editing-a-github-apps-permissions.md @@ -22,7 +22,7 @@ ms.locfileid: '145085018' --- {% note %} -注意:在帐户所有者或组织批准更改之前,更新的权限不会对安装生效。 可以使用 [InstallationEvent Webhook](/webhooks/event-payloads/#installation) 来了解用户何时接受应用的新权限。 [用户级权限](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#user-level-permissions)是一个例外,它不需要帐户所有者批准权限更改。 +注意:在帐户所有者或组织批准更改之前,更新的权限不会对安装生效。可以使用 [InstallationEvent Webhook](/webhooks/event-payloads/#installation) 来了解用户何时接受应用的新权限。 [用户级权限](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#user-level-permissions)是一个例外,它不需要帐户所有者批准权限更改。 {% endnote %} @@ -31,7 +31,7 @@ ms.locfileid: '145085018' ![应用选择](/assets/images/github-apps/github_apps_select-app.png) 5. 在左侧边栏中,单击“权限和 Webhook”。 ![权限和 Webhook](/assets/images/github-apps/github_apps_permissions_and_webhooks.png) -6. 修改要更改的权限。 对于每种类型的权限,从下拉列表中选择“只读”、“读取和写入”或“无访问权限”。 +6. 修改要更改的权限。对于每种类型的权限,从下拉列表中选择“只读”、“读取和写入”或“无访问权限”。 ![GitHub 应用的权限选择](/assets/images/github-apps/github_apps_permissions_post2dot13.png) 7. 在“Subscribe to events(订阅事件)”中,选择应用程序要订阅的任何事件。 ![GitHub 应用订阅事件的权限选择](/assets/images/github-apps/github_apps_permissions_subscribe_to_events.png) diff --git a/translations/zh-CN/content/developers/apps/managing-github-apps/installing-github-apps.md b/translations/zh-CN/content/developers/apps/managing-github-apps/installing-github-apps.md index 96559eef1123..77ba8c67e939 100644 --- a/translations/zh-CN/content/developers/apps/managing-github-apps/installing-github-apps.md +++ b/translations/zh-CN/content/developers/apps/managing-github-apps/installing-github-apps.md @@ -1,6 +1,6 @@ --- title: 安装 GitHub 应用程序 -intro: '当你的应用公开时,任何人都可以使用 {% ifversion fpt or ghec %} {% data variables.product.prodname_marketplace %} 或{% endif %}安装 URL 在其存储库中安装该应用。 当您的应用程序为私有时,只有您能将该应用程序安装在您自己的仓库中。' +intro: '当你的应用公开时,任何人都可以使用 {% ifversion fpt or ghec %} {% data variables.product.prodname_marketplace %} 或{% endif %}安装 URL 在其存储库中安装该应用。当您的应用程序为私有时,只有您能将该应用程序安装在您自己的仓库中。' redirect_from: - /apps/installing-github-apps - /developers/apps/installing-github-apps @@ -26,14 +26,14 @@ ms.locfileid: '145085015' ## 在您的仓库中安装您的私有 GitHub 应用程序 -创建私有 GitHub 应用程序后,您可以将其安装在您的某个组织或用户仓库中。 有关详细信息,请参阅“[专用安装流](/apps/managing-github-apps/making-a-github-app-public-or-private/#private-installation-flow)”。 +创建私有 GitHub 应用程序后,您可以将其安装在您的某个组织或用户仓库中。有关详细信息,请参阅“[专用安装流](/apps/managing-github-apps/making-a-github-app-public-or-private/#private-installation-flow)”。 1. 在 [GitHub 应用设置页](https://github.com/settings/apps),选择你的应用。 2. 在左侧边栏中,单击“安装应用”。 3. 单击包含适当存储库的组织或个人帐户旁边的“安装”。 4. 将应用程序安装在所有仓库或所选仓库中。 ![应用安装权限](/assets/images/install_permissions.png) -5. 安装后,您将在所选帐户上看到应用程序的配置选项。 您可以在这里进行更改,或重复前面的步骤将应用程序安装到其他帐户上。 +5. 安装后,您将在所选帐户上看到应用程序的配置选项。您可以在这里进行更改,或重复前面的步骤将应用程序安装到其他帐户上。 {% ifversion fpt or ghec %} ## 在 GitHub Marketplace 中提供您的应用程序 @@ -48,27 +48,27 @@ ms.locfileid: '145085015' ## 允许用户在他们的仓库中安装您的公共应用程序 -您可以通过在应用程序的主页等位置提供安装 URL,使其他人能够安装您的公共应用程序。 然后,您可以从 GitHub 的登陆页面指向您的应用程序主页。 +您可以通过在应用程序的主页等位置提供安装 URL,使其他人能够安装您的公共应用程序。然后,您可以从 GitHub 的登陆页面指向您的应用程序主页。 - 如果要从 OAuth 应用程序迁移到 GitHub 应用程序,您可以在安装 GitHub 应用程序时使用查询参数预先选择仓库和帐户。 有关详细信息,请参阅“[将 OAuth 应用迁移到 GitHub 应用](/apps/migrating-oauth-apps-to-github-apps/)”。 + 如果要从 OAuth 应用程序迁移到 GitHub 应用程序,您可以在安装 GitHub 应用程序时使用查询参数预先选择仓库和帐户。有关详细信息,请参阅“[将 OAuth 应用迁移到 GitHub 应用](/apps/migrating-oauth-apps-to-github-apps/)”。 这些步骤假定你已[生成 {% data variables.product.prodname_github_app %}](/apps/building-github-apps/): 1. 在 [GitHub 应用设置页](https://github.com/settings/apps),选择要配置供他人安装的公共应用。 2. 在“主页 URL”中,键入应用主页的 URL,然后单击“保存更改”。 ![主页 URL](/assets/images/github-apps/github_apps_homepageURL.png) -3. GitHub 为您的应用程序提供一个登录页面,其中包含指向应用程序“Homepage URL(主页 URL)”的链接。 要访问 GitHub 上的登录页面,请从“Public link(公共链接)”复制 URL 并将其粘贴到浏览器中。 +3. GitHub 为您的应用程序提供一个登录页面,其中包含指向应用程序“Homepage URL(主页 URL)”的链接。要访问 GitHub 上的登录页面,请从“Public link(公共链接)”复制 URL 并将其粘贴到浏览器中。 ![公用链接](/assets/images/github-apps/github_apps_public_link.png) 4. 为应用创建一个包含应用安装 URL 的主页:`{% data variables.product.oauth_host_code %}/apps//installations/new`。 ## 在安装过程中授权用户 -您可以通过在应用程序安装过程中完成授权过程来简化它。 为此,在 GitHub 中创建或修改应用时请选择“在安装过程中请求用户授权 (OAuth)”。 有关详细信息,请参阅“[创建 GitHub 应用](/apps/building-github-apps/creating-a-github-app/)”。 +您可以通过在应用程序安装过程中完成授权过程来简化它。为此,在 GitHub 中创建或修改应用时请选择“在安装过程中请求用户授权 (OAuth)”。有关详细信息,请参阅“[创建 GitHub 应用](/apps/building-github-apps/creating-a-github-app/)”。 -一旦有人安装了您的应用程序,您将需要为用户获取访问令牌。 有关详细信息,请参阅“[识别站点上的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site)”中的步骤 2 和 3。 +一旦有人安装了您的应用程序,您将需要为用户获取访问令牌。有关详细信息,请参阅“[识别站点上的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site)”中的步骤 2 和 3。 ## 在安装过程中保留应用程序状态 -你可以在应用的安装 URL 中提供 `state` 参数,以保留应用程序页面的状态,并在用户安装、身份验证或接受 GitHub 应用的更新后将用户返回到该状态。 例如,可使用 `state` 参数将安装关联到用户或帐户。 +你可以在应用的安装 URL 中提供 `state` 参数,以保留应用程序页面的状态,并在用户安装、身份验证或接受 GitHub 应用的更新后将用户返回到该状态。例如,可使用 `state` 参数将安装关联到用户或帐户。 要保留状态,请将其添加到安装 URL: diff --git a/translations/zh-CN/content/developers/apps/managing-github-apps/making-a-github-app-public-or-private.md b/translations/zh-CN/content/developers/apps/managing-github-apps/making-a-github-app-public-or-private.md index 35ded777f585..918a3fb406e8 100644 --- a/translations/zh-CN/content/developers/apps/managing-github-apps/making-a-github-app-public-or-private.md +++ b/translations/zh-CN/content/developers/apps/managing-github-apps/making-a-github-app-public-or-private.md @@ -27,11 +27,11 @@ ms.locfileid: '147065888' ## 公共安装流程 -公共安装流程有一个登录页面,可让除应用程序所有者以外的其他人在他们的仓库中安装应用程序。 设置您的 GitHub 应用程序时,在“Public link(公共链接)”字段中提供此链接。 有关详细信息,请参阅“[安装 GitHub 应用](/apps/installing-github-apps/)”。 +公共安装流程有一个登录页面,可让除应用程序所有者以外的其他人在他们的仓库中安装应用程序。设置您的 GitHub 应用程序时,在“Public link(公共链接)”字段中提供此链接。有关详细信息,请参阅“[安装 GitHub 应用](/apps/installing-github-apps/)”。 ## 私有安装流程 -私有安装流程只允许 GitHub 应用程序的所有者安装它。 有关 GitHub 应用的有限信息仍将存在于公共页面,但“安装”按钮仅对组织管理员或个人帐户(如果 GitHub 应用由个人帐户所有)可用。 专用 GitHub 应用只能安装在所有者的用户或组织帐户上。 +私有安装流程只允许 GitHub 应用程序的所有者安装它。有关 GitHub 应用的有限信息仍将存在于公共页面,但“安装”按钮仅对组织管理员或个人帐户(如果 GitHub 应用由个人帐户所有)可用。专用 GitHub 应用只能安装在所有者的用户或组织帐户上。 ## 更改 GitHub 应用程序的安装权限 diff --git a/translations/zh-CN/content/developers/apps/managing-github-apps/modifying-a-github-app.md b/translations/zh-CN/content/developers/apps/managing-github-apps/modifying-a-github-app.md index 435c11248c99..86ebf7665269 100644 --- a/translations/zh-CN/content/developers/apps/managing-github-apps/modifying-a-github-app.md +++ b/translations/zh-CN/content/developers/apps/managing-github-apps/modifying-a-github-app.md @@ -22,7 +22,7 @@ ms.locfileid: '146178501' {% data reusables.user-settings.access_settings %} {% data reusables.user-settings.developer_settings %} {% data reusables.user-settings.github_apps %} {% data reusables.user-settings.modify_github_app %} 5. 在“Basic information(基本信息)”中,修改您要更改的 GitHub 应用程序信息。 ![GitHub 应用的基本信息部分](/assets/images/github-apps/github_apps_basic_information.png){% ifversion device-flow-is-opt-in %} -1. 如果 GitHub 应用将使用设备流来识别和授权用户,请单击“启用设备流”。 有关设备流的详细信息,请参阅“[授权 OAuth 应用](/developers/apps/building-oauth-apps/authorizing-oauth-apps#device-flow)”。 +1. 如果 GitHub 应用将使用设备流来识别和授权用户,请单击“启用设备流”。有关设备流的详细信息,请参阅“[授权 OAuth 应用](/developers/apps/building-oauth-apps/authorizing-oauth-apps#device-flow)”。 ![显示启用设备流的字段的屏幕截图](/assets/images/oauth-apps/enable-device-flow.png){% endif %} 6. 单击“保存更改”。 ![保存 GitHub 应用更改的按钮](/assets/images/github-apps/github_apps_save_changes.png) diff --git a/translations/zh-CN/content/developers/apps/managing-github-apps/suspending-a-github-app-installation.md b/translations/zh-CN/content/developers/apps/managing-github-apps/suspending-a-github-app-installation.md index eafe305576b3..57ba695ac96e 100644 --- a/translations/zh-CN/content/developers/apps/managing-github-apps/suspending-a-github-app-installation.md +++ b/translations/zh-CN/content/developers/apps/managing-github-apps/suspending-a-github-app-installation.md @@ -21,11 +21,11 @@ ms.locfileid: '145085009' --- ## 挂起 GitHub 应用程序 -拥有和维护 GitHub 应用程序的集成者(也称为 GitHub 应用程序所有者)可以使用具有 JWT 的 REST API 端点来挂起或取消挂起 GitHub 应用程序安装设施。 有关详细信息,请参阅 [GitHub 应用 REST API](/rest/reference/apps)。 +拥有和维护 GitHub 应用程序的集成者(也称为 GitHub 应用程序所有者)可以使用具有 JWT 的 REST API 端点来挂起或取消挂起 GitHub 应用程序安装设施。有关详细信息,请参阅 [GitHub 应用 REST API](/rest/reference/apps)。 -安装 GitHub 应用程序的人(也称为安装设施所有者)只能通过其应用程序的安装设置来挂起或取消挂起 GitHub 应用程序。 安装设施所有者不能使用 API 来挂起或取消挂起其应用程序安装设施。 +安装 GitHub 应用程序的人(也称为安装设施所有者)只能通过其应用程序的安装设置来挂起或取消挂起 GitHub 应用程序。安装设施所有者不能使用 API 来挂起或取消挂起其应用程序安装设施。 -如果安装已被 {% data variables.product.prodname_github_app %} 所有者暂停,安装所有者不能取消暂停其 {% data variables.product.prodname_github_app %} 的安装。 但是,在应用程序暂停时,安装所有者可以更改其他设置,例如仓库选择。 +如果安装已被 {% data variables.product.prodname_github_app %} 所有者暂停,安装所有者不能取消暂停其 {% data variables.product.prodname_github_app %} 的安装。但是,在应用程序暂停时,安装所有者可以更改其他设置,例如仓库选择。 {% data reusables.user-settings.access_settings %} {% data reusables.user-settings.developer_settings %} {% data reusables.user-settings.github_apps %} 1. 选择要暂停的 {% data variables.product.prodname_github_app %} 。 diff --git a/translations/zh-CN/content/developers/apps/managing-oauth-apps/troubleshooting-authorization-request-errors.md b/translations/zh-CN/content/developers/apps/managing-oauth-apps/troubleshooting-authorization-request-errors.md index 482979498d66..1b9d12d279b5 100644 --- a/translations/zh-CN/content/developers/apps/managing-oauth-apps/troubleshooting-authorization-request-errors.md +++ b/translations/zh-CN/content/developers/apps/managing-oauth-apps/troubleshooting-authorization-request-errors.md @@ -51,4 +51,4 @@ ms.locfileid: '145084996' &error_uri=/apps/building-integrations/setting-up-and-registering-oauth-apps/troubleshooting-authorization-request-errors/%23access-denied &state=xyz -在这方面你无能为力,因为用户可以自由选择不使用你的应用程序。 通常,用户只是关闭窗口或在浏览器中按返回按钮,所以你可能永远不会看到此错误。 +在这方面你无能为力,因为用户可以自由选择不使用你的应用程序。通常,用户只是关闭窗口或在浏览器中按返回按钮,所以你可能永远不会看到此错误。 diff --git a/translations/zh-CN/content/developers/apps/managing-oauth-apps/troubleshooting-oauth-app-access-token-request-errors.md b/translations/zh-CN/content/developers/apps/managing-oauth-apps/troubleshooting-oauth-app-access-token-request-errors.md index 74eae4321ca3..b794be0d5e0e 100644 --- a/translations/zh-CN/content/developers/apps/managing-oauth-apps/troubleshooting-oauth-app-access-token-request-errors.md +++ b/translations/zh-CN/content/developers/apps/managing-oauth-apps/troubleshooting-oauth-app-access-token-request-errors.md @@ -38,7 +38,7 @@ ms.locfileid: '145084995' } ``` -要解决此错误,请确保您拥有 {% data variables.product.prodname_oauth_app %} 的正确凭据。 仔细检查 `client_id` 和 `client_secret`,并确保它们正确无误,并将其正确传递给 {% data variables.product.product_name %}。 +要解决此错误,请确保您拥有 {% data variables.product.prodname_oauth_app %} 的正确凭据。仔细检查 `client_id` 和 `client_secret`,并确保它们正确无误,并将其正确传递给 {% data variables.product.product_name %}。 ## 重定向 URI 不匹配 diff --git a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/customer-experience-best-practices-for-apps.md b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/customer-experience-best-practices-for-apps.md index 6fb7791f0e76..e0809dea6b2d 100644 --- a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/customer-experience-best-practices-for-apps.md +++ b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/customer-experience-best-practices-for-apps.md @@ -23,7 +23,7 @@ ms.locfileid: '145084992' - 应用程序的营销材料应准确反映应用程序的行为。 - 应用程序应包含面向用户的文档的链接,这些文档介绍如何设置和使用应用程序。 - 客户应该能够在应用程序的帐单、配置文件或帐户设置部分看到他们在使用什么类型的计划。 -- 客户应该能够在个人帐户和组织帐户上安装和使用您的应用程序。 他们应该能够单独查看和管理这些帐户上的应用程序。 +- 客户应该能够在个人帐户和组织帐户上安装和使用您的应用程序。他们应该能够单独查看和管理这些帐户上的应用程序。 ## 计划管理 diff --git a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md index 320f402a941e..040dff8f879c 100644 --- a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md +++ b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/requirements-for-listing-an-app.md @@ -28,7 +28,7 @@ ms.locfileid: '145084989' ## 对所有 {% data variables.product.prodname_marketplace %} 上架产品的要求 -{% data variables.product.prodname_marketplace %} 中的所有上架产品应该是能够为 {% data variables.product.product_name %} 社区提供价值的工具。 提交要发布的上架信息时,必须阅读并接受“[{% data variables.product.prodname_marketplace %} 开发人员协议](/free-pro-team@latest/github/site-policy/github-marketplace-developer-agreement)”的条款。 +{% data variables.product.prodname_marketplace %} 中的所有上架产品应该是能够为 {% data variables.product.product_name %} 社区提供价值的工具。提交要发布的上架信息时,必须阅读并接受“[{% data variables.product.prodname_marketplace %} 开发人员协议](/free-pro-team@latest/github/site-policy/github-marketplace-developer-agreement)”的条款。 ### 所有应用程序的用户体验要求 @@ -40,17 +40,17 @@ ms.locfileid: '145084989' - 上架信息必须指定定价计划。 - 应用程序必须为客户提供价值,并通过身份验证以外的其他方式与平台集成。 - 应用程序必须在 {% data variables.product.prodname_marketplace %} 中公开可用,并且不能是测试版或只能通过邀请获取。 -- 应用程序必须设置 web 挂钩事件,以便在发生计划更改或取消时通过 {% data variables.product.prodname_marketplace %} API 通知发布者。 有关详细信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 +- 应用程序必须设置 web 挂钩事件,以便在发生计划更改或取消时通过 {% data variables.product.prodname_marketplace %} API 通知发布者。有关详细信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 有关提供良好客户体验的详细信息,请参阅“[应用的客户体验最佳做法](/developers/github-marketplace/customer-experience-best-practices-for-apps)”。 ### 所有应用程序的品牌和上架要求 -- 使用 GitHub 徽标的应用程序必须遵循 {% data variables.product.company_short %} 指南。 有关详细信息,请参阅“[{% data variables.product.company_short %} 徽标和用法](https://github.com/logos)”。 +- 使用 GitHub 徽标的应用程序必须遵循 {% data variables.product.company_short %} 指南。有关详细信息,请参阅“[{% data variables.product.company_short %} 徽标和用法](https://github.com/logos)”。 - 应用必须具有符合“[编写 {% data variables.product.prodname_marketplace %} 上架产品描述](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/)”中提供的建议的徽标、功能卡和屏幕截图图像。 -- 上架信息必须包含认真编写并且没有语法错误的说明。 有关编写上架产品的指导,请参阅“[编写 {% data variables.product.prodname_marketplace %} 上架产品描述](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/)”。 +- 上架信息必须包含认真编写并且没有语法错误的说明。有关编写上架产品的指导,请参阅“[编写 {% data variables.product.prodname_marketplace %} 上架产品描述](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/)”。 -为了保护您的客户,我们建议您还要遵循安全最佳实践。 有关详细信息,请参阅“[应用的安全性最佳做法](/developers/github-marketplace/security-best-practices-for-apps)”。 +为了保护您的客户,我们建议您还要遵循安全最佳实践。有关详细信息,请参阅“[应用的安全性最佳做法](/developers/github-marketplace/security-best-practices-for-apps)”。 ## 免费应用程序注意事项 @@ -58,15 +58,15 @@ ms.locfileid: '145084989' ## 付费应用程序的要求 -要在 {% data variables.product.prodname_marketplace %} 上发布应用程序的付费计划,您的应用程序必须由身份为经验证发布者的组织所拥有。 有关验证过程或转移应用所有权的详细信息,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 +要在 {% data variables.product.prodname_marketplace %} 上发布应用程序的付费计划,您的应用程序必须由身份为经验证发布者的组织所拥有。有关验证过程或转移应用所有权的详细信息,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 -如果您的应用程序已发布,并且您是经验证的发布者,则您可以使用定价计划编辑器发布新的付费计划。 有关详细信息,请参阅“[设置上架产品的定价计划](/developers/github-marketplace/setting-pricing-plans-for-your-listing)”。 +如果您的应用程序已发布,并且您是经验证的发布者,则您可以使用定价计划编辑器发布新的付费计划。有关详细信息,请参阅“[设置上架产品的定价计划](/developers/github-marketplace/setting-pricing-plans-for-your-listing)”。 要发布付费应用程序(或提供付费计划的应用程序),您还必须满足以下要求: - {% data variables.product.prodname_github_apps %} 应至少有 100 个安装设施。 - {% data variables.product.prodname_oauth_apps %} 应至少有 200 个用户。 -- 所有付费应用程序必须处理关于新购买、升级、降级、取消和免费试用的 {% data variables.product.prodname_marketplace %} 购买事件。 有关详细信息,请参阅下面的“[付费应用的计费要求](#billing-requirements-for-paid-apps)”。 +- 所有付费应用程序必须处理关于新购买、升级、降级、取消和免费试用的 {% data variables.product.prodname_marketplace %} 购买事件。有关详细信息,请参阅下面的“[付费应用的计费要求](#billing-requirements-for-paid-apps)”。 当您准备在 {% data variables.product.prodname_marketplace %} 上发布应用程序时,您必须请求验证应用程序上架信息。 @@ -78,9 +78,9 @@ ms.locfileid: '145084989' ## 付费应用程序的计费要求 -您的应用程序无需处理付款,但需要使用 {% data variables.product.prodname_marketplace %} 购买事件来管理新购买、升级、降级、取消和免费试用。 有关如何将这些事件集成到应用的信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 +您的应用程序无需处理付款,但需要使用 {% data variables.product.prodname_marketplace %} 购买事件来管理新购买、升级、降级、取消和免费试用。有关如何将这些事件集成到应用的信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 GitHub 的计费 API 允许客户在不离开 GitHub 的情况下购买应用程序,并使用已附加到其在 {% data variables.product.product_location %} 上帐户的付款方式来支付服务费用。 - 应用程序必须在付费订阅计划中支持月度和年度计费。 -- 上架产品可提供免费和付费计划的任何组合。 免费计划是可选项,但建议提供。 有关详细信息,请参阅“[设置 {% data variables.product.prodname_marketplace %} 上架产品的定价计划](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/)”。 +- 上架产品可提供免费和付费计划的任何组合。免费计划是可选项,但建议提供。有关详细信息,请参阅“[设置 {% data variables.product.prodname_marketplace %} 上架产品的定价计划](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/)”。 diff --git a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/security-best-practices-for-apps.md b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/security-best-practices-for-apps.md index 14d2ccaa0f3f..16b108ef809b 100644 --- a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/security-best-practices-for-apps.md +++ b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/security-best-practices-for-apps.md @@ -23,11 +23,11 @@ ms.locfileid: '145084984' ## 授权、身份验证和访问控制 -我们建议创建 GitHub 应用程序,而不是 OAuth 应用程序。 {% data reusables.marketplace.github_apps_preferred %}。 有关详细信息,请参阅“[GitHub 应用与 OAuth 应用的区别](/apps/differences-between-apps/)”。 -- 应用程序应使用最小权限原则,只请求应用程序执行其预期功能所需的 OAuth 作用域和 GitHub 应用程序权限。 有关详细信息,请参阅维基百科[最小权限原则](https://en.wikipedia.org/wiki/Principle_of_least_privilege)。 +我们建议创建 GitHub 应用程序,而不是 OAuth 应用程序。 {% data reusables.marketplace.github_apps_preferred %}。有关详细信息,请参阅“[GitHub 应用与 OAuth 应用的区别](/apps/differences-between-apps/)”。 +- 应用程序应使用最小权限原则,只请求应用程序执行其预期功能所需的 OAuth 作用域和 GitHub 应用程序权限。有关详细信息,请参阅维基百科[最小权限原则](https://en.wikipedia.org/wiki/Principle_of_least_privilege)。 - 应用程序应为客户提供删除其帐户的方法,而无需发送电子邮件或呼叫支持人员。 -- 应用程序不应在应用程序的不同实现之间共享令牌。 例如,桌面应用程序应该使用与基于 Web 的应用程序不同的令牌。 单个令牌允许每个应用程序单独请求 GitHub 资源所需的访问权限。 -- 根据每种用户类型所需的功能,针对不同的用户角色设计应用程序。 例如,标准用户不应有权访问管理功能,帐单管理员可能不需要仓库代码推送权限。 +- 应用程序不应在应用程序的不同实现之间共享令牌。例如,桌面应用程序应该使用与基于 Web 的应用程序不同的令牌。单个令牌允许每个应用程序单独请求 GitHub 资源所需的访问权限。 +- 根据每种用户类型所需的功能,针对不同的用户角色设计应用程序。例如,标准用户不应有权访问管理功能,帐单管理员可能不需要仓库代码推送权限。 - 应用程序不应共享服务帐户(如电子邮件或数据库服务)来管理 SaaS 服务。 - 应用程序中使用的所有服务都应具有唯一的登录名和密码凭据。 - 对生产托管基础架构的管理员权限只能授予担当管理职责的工程师和员工。 @@ -38,14 +38,14 @@ ms.locfileid: '145084984' ## 数据保护 - 应用程序应使用带有有效 TLS 证书或 SSH for Git 的 HTTPS 对通过公共互联网传输的数据进行加密。 -- 应用程序应安全地存储客户端 ID 和客户端密钥。 建议将它们存储为[环境变量](http://en.wikipedia.org/wiki/Environment_variable#Getting_and_setting_environment_variables)。 +- 应用程序应安全地存储客户端 ID 和客户端密钥。建议将它们存储为[环境变量](http://en.wikipedia.org/wiki/Environment_variable#Getting_and_setting_environment_variables)。 - 应用程序应在收到用户请求后 30 天内或在用户与 GitHub 的法律关系终止后 30 天内删除所有 GitHub 用户数据。 - 应用程序不应要求用户提供其 GitHub 密码。 - 应用程序应该对令牌、客户端 ID 和客户端密钥进行加密。 ## 日志记录和监视 -应用程序应具有日志记录和监视功能。 应用程序日志应保留至少 30 天,并存档至少一年。 +应用程序应具有日志记录和监视功能。应用程序日志应保留至少 30 天,并存档至少一年。 安全日志应包括: - 身份验证和授权事件 @@ -58,12 +58,12 @@ ms.locfileid: '145084984' ## 事件响应工作流 -要为用户提供安全体验,应在上架应用程序之前制定明确的事件响应计划。 我们建议您在自己的公司内成立安全和运营事件响应团队,而不是使用第三方供应商。 您应该能够在确认事件后 24 小时内通知 {% data variables.product.product_name %}。 +要为用户提供安全体验,应在上架应用程序之前制定明确的事件响应计划。我们建议您在自己的公司内成立安全和运营事件响应团队,而不是使用第三方供应商。您应该能够在确认事件后 24 小时内通知 {% data variables.product.product_name %}。 -有关事件响应工作流的示例,请参阅 [SANS 研究所网站](https://www.sans.org/information-security-policy/)上的“数据泄露响应策略”。 包含明确的事件响应措施的简短文档比冗长的策略模板更有价值。 +有关事件响应工作流的示例,请参阅 [SANS 研究所网站](https://www.sans.org/information-security-policy/)上的“数据泄露响应策略”。包含明确的事件响应措施的简短文档比冗长的策略模板更有价值。 ## 漏洞管理和补丁工作流程 -您应该定期对生产基础架构进行漏洞扫描。 您应该对漏洞扫描的结果进行分类,并定义您同意修复漏洞的时间段。 +您应该定期对生产基础架构进行漏洞扫描。您应该对漏洞扫描的结果进行分类,并定义您同意修复漏洞的时间段。 -如果您还没有准备好设置完整的漏洞管理程序,最好先创建一个修补流程。 有关创建修补程序管理策略的指南,请参阅此 TechRepublic 文章:“[建立修补程序管理策略](https://www.techrepublic.com/article/establish-a-patch-management-policy-87756/)”。 +如果您还没有准备好设置完整的漏洞管理程序,最好先创建一个修补流程。有关创建修补程序管理策略的指南,请参阅此 TechRepublic 文章:“[建立修补程序管理策略](https://www.techrepublic.com/article/establish-a-patch-management-policy-87756/)”。 diff --git a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/viewing-metrics-for-your-listing.md b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/viewing-metrics-for-your-listing.md index c157dd4f7d3f..d3b1e7e18838 100644 --- a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/viewing-metrics-for-your-listing.md +++ b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/viewing-metrics-for-your-listing.md @@ -1,6 +1,6 @@ --- title: 查看上架产品的指标 -intro: '{% data variables.product.prodname_marketplace %} Insights 页面显示 {% data variables.product.prodname_github_app %} 的指标。 您可以使用这些指标来跟踪 {% data variables.product.prodname_github_app %} 的表现,并就价格、计划、免费试用以及如何看待营销活动的效果做出更明智的决定。' +intro: '{% data variables.product.prodname_marketplace %} Insights 页面显示 {% data variables.product.prodname_github_app %} 的指标。您可以使用这些指标来跟踪 {% data variables.product.prodname_github_app %} 的表现,并就价格、计划、免费试用以及如何看待营销活动的效果做出更明智的决定。' redirect_from: - /apps/marketplace/managing-github-marketplace-listings/viewing-performance-metrics-for-a-github-marketplace-listing - /apps/marketplace/viewing-performance-metrics-for-a-github-marketplace-listing @@ -24,7 +24,7 @@ ms.locfileid: '145084983' {% note %} -**注意:** 由于聚合数据需要时间,因此你会注意到显示的日期略有延迟。 选择时间段时,可以在页面顶部看到指标的确切日期。 +**注意:** 由于聚合数据需要时间,因此你会注意到显示的日期略有延迟。选择时间段时,可以在页面顶部看到指标的确切日期。 {% endnote %} @@ -32,9 +32,9 @@ ms.locfileid: '145084983' Insights 页面显示选定时段的以下性能指标: -* 订阅值:订阅的可能总收入(美元)。 此值表示在没有计划或免费试用被取消并且所有信用交易都成功的情况下的可能收入。 订阅价值包括计划在选定时段内的全部价值,从免费试用开始计算,即使在该时段内没有任何财务交易。 订阅价值还包括选定时段内升级计划的全部价值,但不包括按比例分配的金额。 若要查看和下载单个交易,请参阅“[GitHub 市场交易](/marketplace/github-marketplace-transactions/)”。 -* 访客数:查看过 GitHub 应用上架信息页面的人数。 此数字包括已登录和已注销的访客。 -* 网页浏览量:GitHub 应用上架信息页面获得的浏览次数。 单个访问者可以生成多个页面视图。 +* 订阅值:订阅的可能总收入(美元)。此值表示在没有计划或免费试用被取消并且所有信用交易都成功的情况下的可能收入。订阅价值包括计划在选定时段内的全部价值,从免费试用开始计算,即使在该时段内没有任何财务交易。订阅价值还包括选定时段内升级计划的全部价值,但不包括按比例分配的金额。若要查看和下载单个交易,请参阅“[GitHub 市场交易](/marketplace/github-marketplace-transactions/)”。 +* 访客数:查看过 GitHub 应用上架信息页面的人数。此数字包括已登录和已注销的访客。 +* 网页浏览量:GitHub 应用上架信息页面获得的浏览次数。单个访问者可以生成多个页面视图。 {% note %} @@ -46,7 +46,7 @@ Insights 页面显示选定时段的以下性能指标: * 登陆页面的绝对访客数:查看过 GitHub 应用的登录页面的人数。 * 结账页面的绝对访客数:查看过 GitHub 应用的结账页面的人数。 -* 结账页面产生的新订阅数:付费订阅、免费试用和免费订阅的总数。 有关每种类型订阅的具体数量,请参阅“订阅总数的细分”。 +* 结账页面产生的新订阅数:付费订阅、免费试用和免费订阅的总数。有关每种类型订阅的具体数量,请参阅“订阅总数的细分”。 ![市场见解](/assets/images/marketplace/marketplace_insights.png) diff --git a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/viewing-transactions-for-your-listing.md b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/viewing-transactions-for-your-listing.md index 7bb8b9fd6375..a21c53bc1b0b 100644 --- a/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/viewing-transactions-for-your-listing.md +++ b/translations/zh-CN/content/developers/github-marketplace/creating-apps-for-github-marketplace/viewing-transactions-for-your-listing.md @@ -1,6 +1,6 @@ --- title: 查看上架产品的交易 -intro: '{% data variables.product.prodname_marketplace %} 交易页面允许您下载和查看 {% data variables.product.prodname_marketplace %} 上架产品的所有交易。 您可以查看 {% data variables.product.prodname_github_app %} 在过去一天(24 小时)、一周、一月或整个上架期间的交易。' +intro: '{% data variables.product.prodname_marketplace %} 交易页面允许您下载和查看 {% data variables.product.prodname_marketplace %} 上架产品的所有交易。您可以查看 {% data variables.product.prodname_github_app %} 在过去一天(24 小时)、一周、一月或整个上架期间的交易。' redirect_from: - /marketplace/github-marketplace-transactions - /developers/github-marketplace/viewing-transactions-for-your-listing @@ -19,12 +19,12 @@ ms.locfileid: '145084981' --- {% note %} -**注意:** 由于聚合数据需要时间,因此你会注意到显示的日期略有延迟。 选择时间段时,可以在页面顶部看到指标的确切日期。 +**注意:** 由于聚合数据需要时间,因此你会注意到显示的日期略有延迟。选择时间段时,可以在页面顶部看到指标的确切日期。 {% endnote %} -您可以查看或下载交易数据来跟踪订阅活动。 单击“导出 CSV”按钮以下载 `.csv` 文件。 您还可以选择一个时间段在交易页面中查看和搜索。 +您可以查看或下载交易数据来跟踪订阅活动。单击“导出 CSV”按钮以下载 `.csv` 文件。您还可以选择一个时间段在交易页面中查看和搜索。 ## 交易数据字段 @@ -34,7 +34,7 @@ ms.locfileid: '145084981' * **user_login:** 订阅用户的 ID。 * **user_type:** GitHub 帐户的类型,`User` 或 `Organization`。 * **:** 三个字母的国家/地区代码。 -* **amount_in_cents:** 交易金额(以美分为单位)。 如果该值小于计划金额,则表示用户已升级并按比例分配给新计划。 值为零表示用户已取消其计划。 +* **amount_in_cents:** 交易金额(以美分为单位)。如果该值小于计划金额,则表示用户已升级并按比例分配给新计划。值为零表示用户已取消其计划。 * **renewal_frequency:** 订阅续订频率,`Monthly` 或 `Yearly`。 * **marketplace_listing_plan_id:** 的 `id`。 * **region:** 帐单邮寄地址中的区域名称。 diff --git a/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/about-github-marketplace.md b/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/about-github-marketplace.md index ab7caf706520..6b2c8eb319b3 100644 --- a/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/about-github-marketplace.md +++ b/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/about-github-marketplace.md @@ -17,7 +17,7 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/10/2022 ms.locfileid: '145084978' --- -[{% data variables.product.prodname_marketplace %}](https://github.com/marketplace) 为你与希望扩展和改进其 {% data variables.product.prodname_dotcom %} 工作流的开发者提供纽带。 您可以在 {% data variables.product.prodname_marketplace %} 中上架免费和付费的工具,供开发者使用。 {% data variables.product.prodname_marketplace %} 为开发者提供两种类型的工具:{% data variables.product.prodname_actions %} 和应用程序,每种工具都需要不同的步骤才能添加到 {% data variables.product.prodname_marketplace %} 中。 +[{% data variables.product.prodname_marketplace %}](https://github.com/marketplace) 为你与希望扩展和改进其 {% data variables.product.prodname_dotcom %} 工作流的开发者提供纽带。您可以在 {% data variables.product.prodname_marketplace %} 中上架免费和付费的工具,供开发者使用。 {% data variables.product.prodname_marketplace %} 为开发者提供两种类型的工具:{% data variables.product.prodname_actions %} 和应用程序,每种工具都需要不同的步骤才能添加到 {% data variables.product.prodname_marketplace %} 中。 ## GitHub 操作 @@ -29,11 +29,11 @@ ms.locfileid: '145084978' 任何人都可以在 {% data variables.product.prodname_marketplace %} 上与其他用户分享其应用程序,但只有组织拥有的应用程序才能出售。 -要发布应用程序付费计划并显示 Marketplace 徽章,您必须完成发布者验证过程。 有关详细信息,请参阅“[为你的组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”或“[列出应用的要求](/developers/github-marketplace/requirements-for-listing-an-app)”。 +要发布应用程序付费计划并显示 Marketplace 徽章,您必须完成发布者验证过程。有关详细信息,请参阅“[为你的组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”或“[列出应用的要求](/developers/github-marketplace/requirements-for-listing-an-app)”。 -组织满足要求后,组织中具有所有者权限的人可以发布其任何应用程序的付费计划。 每个具有付费计划的应用程序还要完成财务手续才能启用付款。 +组织满足要求后,组织中具有所有者权限的人可以发布其任何应用程序的付费计划。每个具有付费计划的应用程序还要完成财务手续才能启用付款。 -要发布具有免费计划的应用程序,只需满足上架任何应用程序的一般要求即可。 有关详细信息,请参阅“[所有 GitHub Marketplace 列表的要求](/developers/github-marketplace/requirements-for-listing-an-app#requirements-for-all-github-marketplace-listings)”。 +要发布具有免费计划的应用程序,只需满足上架任何应用程序的一般要求即可。有关详细信息,请参阅“[所有 GitHub Marketplace 列表的要求](/developers/github-marketplace/requirements-for-listing-an-app#requirements-for-all-github-marketplace-listings)”。 ### 不熟悉应用程序? @@ -41,27 +41,27 @@ ms.locfileid: '145084978' ### {% data variables.product.prodname_github_apps %} 与 {% data variables.product.prodname_oauth_apps %} 的比较 -{% data reusables.marketplace.github_apps_preferred %},尽管您可以在 {% data variables.product.prodname_marketplace %} 同时列出OAuth 和 {% data variables.product.prodname_github_apps %}。 更多信息请参阅“[{% data variables.product.prodname_github_apps %} 与 {% data variables.product.prodname_oauth_apps %} 之间的差异](/apps/differences-between-apps/)”和“[将 {% data variables.product.prodname_oauth_apps %} 迁移到 {% data variables.product.prodname_github_apps %}](/apps/migrating-oauth-apps-to-github-apps/)”。 +{% data reusables.marketplace.github_apps_preferred %},尽管您可以在 {% data variables.product.prodname_marketplace %} 同时列出 OAuth 和 {% data variables.product.prodname_github_apps %}。更多信息请参阅“[{% data variables.product.prodname_github_apps %} 与 {% data variables.product.prodname_oauth_apps %} 之间的差异](/apps/differences-between-apps/)”和“[将 {% data variables.product.prodname_oauth_apps %} 迁移到 {% data variables.product.prodname_github_apps %}](/apps/migrating-oauth-apps-to-github-apps/)”。 ## 将应用程序发布到 {% data variables.product.prodname_marketplace %} 概述 -完成创建应用程序后,您可以将其发布到 {% data variables.product.prodname_marketplace %},以便与其他用户分享它。 过程归纳如下: +完成创建应用程序后,您可以将其发布到 {% data variables.product.prodname_marketplace %},以便与其他用户分享它。过程归纳如下: -1. 仔细检查您的应用程序,以确保它在其他仓库中的行为与预期一致,并且遵循最佳实践指南。 有关详细信息,请参阅“[应用的安全最佳做法](/developers/github-marketplace/security-best-practices-for-apps)”和“[上架应用的要求](/developers/github-marketplace/requirements-for-listing-an-app#best-practice-for-customer-experience)”。 +1. 仔细检查您的应用程序,以确保它在其他仓库中的行为与预期一致,并且遵循最佳实践指南。有关详细信息,请参阅“[应用的安全最佳做法](/developers/github-marketplace/security-best-practices-for-apps)”和“[上架应用的要求](/developers/github-marketplace/requirements-for-listing-an-app#best-practice-for-customer-experience)”。 -1. 将 web 挂钩事件添加到应用程序以跟踪用户帐单请求。 有关 {% data variables.product.prodname_marketplace %} API、Webhook 事件以及计费请求的更多信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 +1. 将 web 挂钩事件添加到应用程序以跟踪用户帐单请求。有关 {% data variables.product.prodname_marketplace %} API、Webhook 事件以及计费请求的更多信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 -1. 创建 {% data variables.product.prodname_marketplace %} 上架信息草稿。 有关详细信息,请参阅“[起草应用上架信息](/developers/github-marketplace/drafting-a-listing-for-your-app)”。 +1. 创建 {% data variables.product.prodname_marketplace %} 上架信息草稿。有关详细信息,请参阅“[起草应用上架信息](/developers/github-marketplace/drafting-a-listing-for-your-app)”。 -1. 添加定价计划。 有关详细信息,请参阅“[为上架产品设置定价计划](/developers/github-marketplace/setting-pricing-plans-for-your-listing)”。 +1. 添加定价计划。有关详细信息,请参阅“[为上架产品设置定价计划](/developers/github-marketplace/setting-pricing-plans-for-your-listing)”。 1. 阅读并接受 [{% data variables.product.prodname_marketplace %} 开发人员协议](/free-pro-team@latest/github/site-policy/github-marketplace-developer-agreement)的条款。 -1. 提交要在 {% data variables.product.prodname_marketplace %} 中发布的上架信息。 有关详细信息,请参阅“[提交上架产品以供发布](/developers/github-marketplace/submitting-your-listing-for-publication)”。 +1. 提交要在 {% data variables.product.prodname_marketplace %} 中发布的上架信息。有关详细信息,请参阅“[提交上架产品以供发布](/developers/github-marketplace/submitting-your-listing-for-publication)”。 ## 查看应用程序的表现 -您可以访问上架产品的指标和交易。 有关详细信息,请参阅: +您可以访问上架产品的指标和交易。有关详细信息,请参阅: - [查看上架产品的指标](/developers/github-marketplace/viewing-metrics-for-your-listing) - [查看上架产品的交易](/developers/github-marketplace/viewing-transactions-for-your-listing) diff --git a/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/about-marketplace-badges.md b/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/about-marketplace-badges.md index c0a5447137e1..efae39e4b0d7 100644 --- a/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/about-marketplace-badges.md +++ b/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/about-marketplace-badges.md @@ -16,7 +16,7 @@ ms.locfileid: '145084977' --- ## 对于 GitHub 应用程序 -{% data variables.product.prodname_marketplace %} 上的某些应用有 {% octicon "verified" aria-label="The verified badge" %} 徽章以及显示“发布者域名和电子邮件已验证”的工具提示。 这意味着该应用由下列组织拥有: +{% data variables.product.prodname_marketplace %} 上的某些应用有 {% octicon "verified" aria-label="The verified badge" %} 徽章以及显示“发布者域名和电子邮件已验证”的工具提示。这意味着该应用由下列组织拥有: - 已验证其域名的所有权,且其个人资料上有经过验证的徽章 - 已确认其电子邮件地址可用于 {% data variables.product.prodname_dotcom %} 支持人员联系该组织 @@ -24,12 +24,12 @@ ms.locfileid: '145084977' ![GitHub 应用市场徽章](/assets/images/marketplace/apps-with-verified-publisher-badge-tooltip.png) -{% note %} {% data variables.product.prodname_dotcom %} 不分析应用。 市场徽章 {% octicon "verified" aria-label="The verified badge" %} 只确认发布者符合上述要求。 +{% note %} {% data variables.product.prodname_dotcom %} 不分析应用。市场徽章 {% octicon "verified" aria-label="The verified badge" %} 只确认发布者符合上述要求。 {% endnote %} 若要了解如何将此徽章添加到应用,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 -{% data variables.product.prodname_marketplace %} 上的某些应用有 {% octicon "verified" aria-label="The verified badge" %} 徽章以及显示“应用符合列出的要求”而非“发布者域名和电子邮件已验证”的工具提示。 这意味着该应用满足“[上架应用的要求](/developers/github-marketplace/requirements-for-listing-an-app)”中所述的上架要求,但发布者尚未经过验证,如“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”中所述。 在发布者成功申请验证之前,带有此徽章的应用无法更改其定价计划。 +{% data variables.product.prodname_marketplace %} 上的某些应用有 {% octicon "verified" aria-label="The verified badge" %} 徽章以及显示“应用符合列出的要求”而非“发布者域名和电子邮件已验证”的工具提示。这意味着该应用满足“[上架应用的要求](/developers/github-marketplace/requirements-for-listing-an-app)”中所述的上架要求,但发布者尚未经过验证,如“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”中所述。在发布者成功申请验证之前,带有此徽章的应用无法更改其定价计划。 ![GitHub 应用市场徽章](/assets/images/marketplace/apps-with-unverified-publisher-badge-tooltip.png) diff --git a/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/applying-for-publisher-verification-for-your-organization.md b/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/applying-for-publisher-verification-for-your-organization.md index a5b0f6e96ab7..bfa2b3863909 100644 --- a/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/applying-for-publisher-verification-for-your-organization.md +++ b/translations/zh-CN/content/developers/github-marketplace/github-marketplace-overview/applying-for-publisher-verification-for-your-organization.md @@ -18,9 +18,9 @@ ms.locfileid: '145084976' --- 发布者验证确保 {% data variables.product.prodname_dotcom %} 有方法联系您、您已经为组织启用双重身份验证并且您组织的域已通过验证。 -一旦您的组织通过验证,您就可以为应用程序发布付费计划。 有关详细信息,请参阅“[设置上架产品的定价计划](/developers/github-marketplace/setting-pricing-plans-for-your-listing)”。 +一旦您的组织通过验证,您就可以为应用程序发布付费计划。有关详细信息,请参阅“[设置上架产品的定价计划](/developers/github-marketplace/setting-pricing-plans-for-your-listing)”。 -要为应用程序提供付费计划,该应用程序必须为组织所有,并且您必须拥有该组织的所有者权限。 如果应用当前属于个人帐户,需要将该应用的所有权转让给组织。 有关详细信息,请参阅“[转让 GitHub 应用的所有权](/developers/apps/transferring-ownership-of-a-github-app)”或“[转让 OAuth 应用的所有权](/developers/apps/transferring-ownership-of-an-oauth-app)”。 +要为应用程序提供付费计划,该应用程序必须为组织所有,并且您必须拥有该组织的所有者权限。如果应用当前属于个人帐户,需要将该应用的所有权转让给组织。有关详细信息,请参阅“[转让 GitHub 应用的所有权](/developers/apps/transferring-ownership-of-a-github-app)”或“[转让 OAuth 应用的所有权](/developers/apps/transferring-ownership-of-an-oauth-app)”。 ## 请求发布者验证 @@ -31,9 +31,9 @@ ms.locfileid: '145084976' 1. 在“开发人员设置”下,单击“发布者验证”。 ![组织设置边栏中的“发布者验证”选项](/assets/images/marketplace/publisher-verification-settings-option.png) 1. 在“Publisher Verification(发布者验证)”下,填写检查列表中的信息: - - 确保您的基本个人资料信息正确无误。 另外,确保您添加了接收 {% data variables.product.company_short %} 的更新和支持信息的最合适电子邮件地址。 - - 确保为您的组织启用双重身份验证。 有关详细信息,请参阅“[要求在组织中进行双因素身份验证](/organizations/keeping-your-organization-secure/requiring-two-factor-authentication-in-your-organization)”。 - - 提交已验证的域名并确保您组织的个人资料页面上显示“已验证”徽章。 相关信息请参阅“[验证或批准组织的域](/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization)”。 + - 确保您的基本个人资料信息正确无误。另外,确保您添加了接收 {% data variables.product.company_short %} 的更新和支持信息的最合适电子邮件地址。 + - 确保为您的组织启用双重身份验证。有关详细信息,请参阅“[要求在组织中进行双因素身份验证](/organizations/keeping-your-organization-secure/requiring-two-factor-authentication-in-your-organization)”。 + - 提交已验证的域名并确保您组织的个人资料页面上显示“已验证”徽章。相关信息请参阅“[验证或批准组织的域](/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization)”。 ![发布者验证检查列表](/assets/images/marketplace/publisher-verification-checklist.png) diff --git a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/configuring-a-webhook-to-notify-you-of-plan-changes.md b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/configuring-a-webhook-to-notify-you-of-plan-changes.md index 486981b0661c..0bb1dbb88e7f 100644 --- a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/configuring-a-webhook-to-notify-you-of-plan-changes.md +++ b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/configuring-a-webhook-to-notify-you-of-plan-changes.md @@ -1,6 +1,6 @@ --- title: 配置 web 挂钩以通知您计划更改 -intro: '[创建草稿 {% data variables.product.prodname_marketplace %} 列表](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/)后,可以配置 Webhook,用于在客户帐户计划发生更改时通知你。 配置 Webhook 后,可以[处理应用中的 `marketplace_purchase` 事件类型](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)。' +intro: '[创建草稿 {% data variables.product.prodname_marketplace %} 列表](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/)后,可以配置 Webhook,用于在客户帐户计划发生更改时通知你。配置 Webhook 后,可以[处理应用中的 `marketplace_purchase` 事件类型](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)。' redirect_from: - /apps/adding-integrations/managing-listings-on-github-marketplace/adding-webhooks-for-a-github-marketplace-listing - /apps/marketplace/managing-github-marketplace-listings/adding-webhooks-for-a-github-marketplace-listing @@ -21,11 +21,11 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/10/2022 ms.locfileid: '145084971' --- -{% data variables.product.prodname_marketplace %} 事件 web 挂钩只能在应用程序的 {% data variables.product.prodname_marketplace %} 上架页面中进行设置。 可在[应用程序的开发人员设置页面](https://github.com/settings/developers)中配置所有其他事件。 如果尚未创建 {% data variables.product.prodname_marketplace %} 上架信息,请阅读“[创建 {% data variables.product.prodname_marketplace %} 上架信息草稿](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/)”了解方法。 +{% data variables.product.prodname_marketplace %} 事件 web 挂钩只能在应用程序的 {% data variables.product.prodname_marketplace %} 上架页面中进行设置。可在[应用程序的开发人员设置页面](https://github.com/settings/developers)中配置所有其他事件。如果尚未创建 {% data variables.product.prodname_marketplace %} 上架信息,请阅读“[创建 {% data variables.product.prodname_marketplace %} 上架信息草稿](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/)”了解方法。 ## 创建 Webhook -若要为 {% data variables.product.prodname_marketplace %} 上架信息创建 Webhook,请在 [{% data variables.product.prodname_marketplace %} 上架页面](https://github.com/marketplace/manage)的左边栏中,单击“Webhook”。 您将看到配置 web 挂钩所需的以下 web 挂钩配置选项: +若要为 {% data variables.product.prodname_marketplace %} 上架信息创建 Webhook,请在 [{% data variables.product.prodname_marketplace %} 上架页面](https://github.com/marketplace/manage)的左边栏中,单击“Webhook”。您将看到配置 web 挂钩所需的以下 web 挂钩配置选项: ### 有效负载 URL @@ -41,10 +41,10 @@ ms.locfileid: '145084971' ### 活动 -默认情况下,web 挂钩交付为“Active(激活)”。 您可以通过取消选择“Active(激活)”来选择在开发过程中禁用 web 挂钩交付。 如果您禁用了 web 挂钩交付,则在提交应用程序以供审查之前需要选择“Active(激活)”。 +默认情况下,web 挂钩交付为“Active(激活)”。您可以通过取消选择“Active(激活)”来选择在开发过程中禁用 web 挂钩交付。如果您禁用了 web 挂钩交付,则在提交应用程序以供审查之前需要选择“Active(激活)”。 ## 查看 web 挂钩交付 -配置 {% data variables.product.prodname_marketplace %} Webhook 后,可在应用程序的 [{% data variables.product.prodname_marketplace %} 上架信息](https://github.com/marketplace/manage)的 Webhook 页面中检查 `POST` 请求有效负载。 GitHub 不会重新发送失败的递送尝试。 确保您的应用程序可以接收 GitHub 发送的所有 web 挂钩有效负载。 +配置 {% data variables.product.prodname_marketplace %} Webhook 后,可在应用程序的 [{% data variables.product.prodname_marketplace %} 上架信息](https://github.com/marketplace/manage)的 Webhook 页面中检查 `POST` 请求有效负载。GitHub 不会重新发送失败的递送尝试。确保您的应用程序可以接收 GitHub 发送的所有 web 挂钩有效负载。 ![检查最近的 {% data variables.product.prodname_marketplace %} web 挂钩交付](/assets/images/marketplace/marketplace_webhook_deliveries.png) diff --git a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/drafting-a-listing-for-your-app.md b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/drafting-a-listing-for-your-app.md index 680c8c1bfcb5..ebb4706eca31 100644 --- a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/drafting-a-listing-for-your-app.md +++ b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/drafting-a-listing-for-your-app.md @@ -1,6 +1,6 @@ --- title: 起草应用程序上架信息 -intro: '当您创建 {% data variables.product.prodname_marketplace %} 上架信息时,GitHub 将其保存为草稿模式,直到您提交应用程序以供审批。 您的上架信息向客户显示如何使用您的应用程序。' +intro: '当您创建 {% data variables.product.prodname_marketplace %} 上架信息时,GitHub 将其保存为草稿模式,直到您提交应用程序以供审批。您的上架信息向客户显示如何使用您的应用程序。' redirect_from: - /apps/adding-integrations/listing-apps-on-github-marketplace/listing-an-app-on-github-marketplace - /apps/marketplace/listing-apps-on-github-marketplace/listing-an-app-on-github-marketplace @@ -28,7 +28,7 @@ ms.locfileid: '145084969' --- ## 创建新的 {% data variables.product.prodname_marketplace %} 上架信息草稿 -您只能为公共应用程序创建上架信息草稿。 在创建上架信息草稿之前,请阅读以下有关在 {% data variables.product.prodname_marketplace %} 上架信息中编写和配置设置的指南: +您只能为公共应用程序创建上架信息草稿。在创建上架信息草稿之前,请阅读以下有关在 {% data variables.product.prodname_marketplace %} 上架信息中编写和配置设置的指南: * [编写 {% data variables.product.prodname_marketplace %} 上架信息说明](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/) * [设置 {% data variables.product.prodname_marketplace %} 上架信息的定价计划](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/) @@ -37,11 +37,11 @@ ms.locfileid: '145084969' 要创建 {% data variables.product.prodname_marketplace %} 上架信息: {% data reusables.user-settings.access_settings %} {% data reusables.user-settings.developer_settings %} -3. 在左侧边栏中,单击“OAuth 应用”或“GitHub 应用”,具体取决于要添加到 {% data variables.product.prodname_marketplace %} 的应用 。 +3. 在左侧边栏中,单击“OAuth 应用”或“GitHub 应用”,具体取决于要添加到 {% data variables.product.prodname_marketplace %} 的应用。 {% note %} - 注意:还可以通过导航至 https://github.com/marketplace/new 、查看可用的应用并单击“创建上架信息草稿”来添加上架信息 。 + 注意:还可以通过导航至 https://github.com/marketplace/new、查看可用的应用并单击“创建上架信息草稿”来添加上架信息。 {% endnote %} @@ -55,17 +55,17 @@ ms.locfileid: '145084969' {% note %} -注意:在上架信息的“联系人信息”部分,建议使用个人电子邮件地址,而不是像 support@domain.com 这样的团体电子邮件地址。 GitHub 将使用这些电子邮件地址与您联系,以告知可能影响您的上架产品的 {% data variables.product.prodname_marketplace %} 更新、新功能发布、营销机会、付款以及会议和赞助信息。 +注意:在上架信息的“联系人信息”部分,建议使用个人电子邮件地址,而不是像 support@domain.com 这样的团体电子邮件地址。GitHub 将使用这些电子邮件地址与您联系,以告知可能影响您的上架产品的 {% data variables.product.prodname_marketplace %} 更新、新功能发布、营销机会、付款以及会议和赞助信息。 {% endnote %} ## 编辑您的上架信息 -创建 {% data variables.product.prodname_marketplace %} 上架信息草稿后,您可以随时回来修改上架信息。 如果您的应用程序已获批准并且在 {% data variables.product.prodname_marketplace %} 中,您可以编辑上架产品的信息和图像,但无法更改现有的已发布定价计划。 请参阅“[设置 {% data variables.product.prodname_marketplace %} 上架信息的定价计划](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/)”。 +创建 {% data variables.product.prodname_marketplace %} 上架信息草稿后,您可以随时回来修改上架信息。如果您的应用程序已获批准并且在 {% data variables.product.prodname_marketplace %} 中,您可以编辑上架产品的信息和图像,但无法更改现有的已发布定价计划。请参阅“[设置 {% data variables.product.prodname_marketplace %} 上架信息的定价计划](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/)”。 ## 提交应用程序 -完成 {% data variables.product.prodname_marketplace %} 上架信息后,便可以在“概述”页中提交上架信息以供审查。 你需要阅读并接受“[{% data variables.product.prodname_marketplace %} 开发者协议](/free-pro-team@latest/github/site-policy/github-marketplace-developer-agreement/)”,然后才可以单击“提交审查”。 提交应用程序以供审查后,上架专家将与您联系,提供有关上架流程的其他信息。 +完成 {% data variables.product.prodname_marketplace %} 上架信息后,便可以在“概述”页中提交上架信息以供审查。你需要阅读并接受“[{% data variables.product.prodname_marketplace %} 开发者协议](/free-pro-team@latest/github/site-policy/github-marketplace-developer-agreement/)”,然后才可以单击“提交审查”。提交应用程序以供审查后,上架专家将与您联系,提供有关上架流程的其他信息。 ## 删除 {% data variables.product.prodname_marketplace %} 上架信息 diff --git a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/setting-pricing-plans-for-your-listing.md b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/setting-pricing-plans-for-your-listing.md index 2faf08191f9c..523e89ee0f3a 100644 --- a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/setting-pricing-plans-for-your-listing.md +++ b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/setting-pricing-plans-for-your-listing.md @@ -1,6 +1,6 @@ --- title: 为上架产品设置定价计划 -intro: '在 {% data variables.product.prodname_marketplace %} 中上架应用程序时,您可以选择免费提供或有偿出售您的应用程序。 如果打算出售应用程序,您可以为不同的功能等级创建不同的定价计划。' +intro: '在 {% data variables.product.prodname_marketplace %} 中上架应用程序时,您可以选择免费提供或有偿出售您的应用程序。如果打算出售应用程序,您可以为不同的功能等级创建不同的定价计划。' redirect_from: - /apps/adding-integrations/managing-pricing-and-payments-for-a-github-marketplace-listing/setting-a-github-marketplace-listing-s-pricing-plan - /apps/marketplace/managing-pricing-and-payments-for-a-github-marketplace-listing/setting-a-github-marketplace-listing-s-pricing-plan @@ -29,31 +29,31 @@ ms.locfileid: '145084963' --- ## 关于设置定价计划 -{% data variables.product.prodname_marketplace %} 提供几种不同类型的定价计划。 有关详细信息,请参阅“[{% data variables.product.prodname_marketplace %} 的定价计划](/developers/github-marketplace/pricing-plans-for-github-marketplace-apps)”。 +{% data variables.product.prodname_marketplace %} 提供几种不同类型的定价计划。有关详细信息,请参阅“[{% data variables.product.prodname_marketplace %} 的定价计划](/developers/github-marketplace/pricing-plans-for-github-marketplace-apps)”。 -要为应用程序提供付费计划,该应用程序必须由已完成发布者验证流程并满足特定条件的组织所拥有。 有关详细信息,请参阅“[为你的组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”和“[在 {% data variables.product.prodname_marketplace %} 中上架应用的要求](/marketplace/getting-started/requirements-for-listing-an-app-on-github-marketplace/)”。 +要为应用程序提供付费计划,该应用程序必须由已完成发布者验证流程并满足特定条件的组织所拥有。有关详细信息,请参阅“[为你的组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”和“[在 {% data variables.product.prodname_marketplace %} 中上架应用的要求](/marketplace/getting-started/requirements-for-listing-an-app-on-github-marketplace/)”。 如果含有付费计划的应用程序已发布,并且您是经验证的发布者,则您可以在 Marketplace 应用程序上架设置中的“Edit a pricing plan(编辑定价计划)”页面发布新的付费计划。 ![发布此计划按钮](/assets/images/marketplace/publish-this-plan-button.png) -如果您的应用已经在付费计划中发布,但您不是验证的发布者,则您可以发布新的付费计划,直到您成为验证的发布者。 有关成为已验证发布者的详细信息,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 +如果您的应用已经在付费计划中发布,但您不是验证的发布者,则您可以发布新的付费计划,直到您成为验证的发布者。有关成为已验证发布者的详细信息,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 ## 关于保存定价计划 -您可以将定价计划保存为草稿或已发布状态。 如果尚未提交 {% data variables.product.prodname_marketplace %} 上架信息以供审批,则已发布的计划与计划草案的运作方式相同,直到您的上架信息得到批准并显示在 {% data variables.product.prodname_marketplace %} 上。 计划草案允许您创建和保存新的定价计划,而无需在您的 {% data variables.product.prodname_marketplace %} 上架页面上提供它们。 一旦您在已发布的上架信息中发布定价计划,它就可以立即供客户购买。 您最多可以发布 10 个定价计划。 +您可以将定价计划保存为草稿或已发布状态。如果尚未提交 {% data variables.product.prodname_marketplace %} 上架信息以供审批,则已发布的计划与计划草案的运作方式相同,直到您的上架信息得到批准并显示在 {% data variables.product.prodname_marketplace %} 上。计划草案允许您创建和保存新的定价计划,而无需在您的 {% data variables.product.prodname_marketplace %} 上架页面上提供它们。一旦您在已发布的上架信息中发布定价计划,它就可以立即供客户购买。您最多可以发布 10 个定价计划。 有关向客户计费的指南,请参阅“[向客户计费](/developers/github-marketplace/billing-customers)”。 ## 创建定价计划 -若要为 {% data variables.product.prodname_marketplace %} 上架信息创建定价计划,请在 [{% data variables.product.prodname_marketplace %} 上架页面](https://github.com/marketplace/manage)的左边栏中,单击“计划和定价”。 有关详细信息,请参阅“[创建 {% data variables.product.prodname_marketplace %} 上架信息的草稿](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/)”。 +若要为 {% data variables.product.prodname_marketplace %} 上架信息创建定价计划,请在 [{% data variables.product.prodname_marketplace %} 上架页面](https://github.com/marketplace/manage)的左边栏中,单击“计划和定价”。有关详细信息,请参阅“[创建 {% data variables.product.prodname_marketplace %} 上架信息的草稿](/marketplace/listing-on-github-marketplace/creating-a-draft-github-marketplace-listing/)”。 -单击“新建草案”时,你将会看到一个用于自定义定价计划的表单。 您需要配置以下字段以创建定价计划: +单击“新建草案”时,你将会看到一个用于自定义定价计划的表单。您需要配置以下字段以创建定价计划: -- **计划名称** - 定价计划的名称将显示在 {% data variables.product.prodname_marketplace %} 应用的登录页面上。 您可以自定义定价计划的名称,使其与计划的资源、将使用该计划的公司规模或任何您想要的内容保持一致。 +- **计划名称** - 定价计划的名称将显示在 {% data variables.product.prodname_marketplace %} 应用的登录页面上。您可以自定义定价计划的名称,使其与计划的资源、将使用该计划的公司规模或任何您想要的内容保持一致。 -- **定价模型** - 有三种类型的定价计划:免费、统一定价和每单位定价。 所有计划都要求通过 Marketplace API 处理新购买和取消事件。 此外,对于付费计划: +- **定价模型** - 有三种类型的定价计划:免费、统一定价和每单位定价。所有计划都要求通过 Marketplace API 处理新购买和取消事件。此外,对于付费计划: - 您必须以美元设置每月和每年订阅价格。 - 您的应用程序必须处理计划更改事件。 @@ -62,11 +62,11 @@ ms.locfileid: '145084963' 有关详细信息,请参阅“[{% data variables.product.prodname_marketplace %} 应用的定价计划](/developers/github-marketplace/pricing-plans-for-github-marketplace-apps)”和“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 -- **适用对象** - {% data variables.product.prodname_marketplace %} 定价计划可以应用于“个人和组织帐户”、“仅个人帐户”或“仅组织帐户” 。 例如,如果你的定价计划为每单位定价并提供多个席位,则可选择“仅组织帐户”,因为无法从个人帐户为组织中的人员分配席位。 +- **适用对象** - {% data variables.product.prodname_marketplace %} 定价计划可以应用于“个人和组织帐户”、“仅个人帐户”或“仅组织帐户” 。例如,如果你的定价计划为每单位定价并提供多个席位,则可选择“仅组织帐户”,因为无法从个人帐户为组织中的人员分配席位。 -- **简要说明** - 编写有关定价计划细节的简短摘要。 说明可包括计划的目标客户类型或所包含的资源。 +- **简要说明** - 编写有关定价计划细节的简短摘要。说明可包括计划的目标客户类型或所包含的资源。 -- **项目符号** - 最多可以编写四个项目符号,其中包括有关定价计划的更多细节。 项目符号可包括应用程序的用例,或列出有关计划中包含的资源或功能的更多详细信息。 +- **项目符号** - 最多可以编写四个项目符号,其中包括有关定价计划的更多细节。项目符号可包括应用程序的用例,或列出有关计划中包含的资源或功能的更多详细信息。 {% data reusables.marketplace.free-plan-note %} @@ -76,18 +76,18 @@ ms.locfileid: '145084963' ![删除定价计划的按钮](/assets/images/marketplace/marketplace_remove_this_plan.png) -为 {% data variables.product.prodname_marketplace %} 中已上架的应用程序发布定价计划后,就无法对该计划进行更改。 您需要删除该定价计划,然后创建一个新计划。 已经购买已删除定价计划的客户将继续使用它,直到他们选择退出并转到新的定价计划。 有关定价计划的详细信息,请参阅“[{% data variables.product.prodname_marketplace %} 定价计划](/marketplace/selling-your-app/github-marketplace-pricing-plans/)”。 +为 {% data variables.product.prodname_marketplace %} 中已上架的应用程序发布定价计划后,就无法对该计划进行更改。您需要删除该定价计划,然后创建一个新计划。已经购买已删除定价计划的客户将继续使用它,直到他们选择退出并转到新的定价计划。有关定价计划的详细信息,请参阅“[{% data variables.product.prodname_marketplace %} 定价计划](/marketplace/selling-your-app/github-marketplace-pricing-plans/)”。 -您删除定价计划后,用户将无法使用该计划购买您的应用程序。 使用已删除定价计划的现有用户将继续使用该计划,直到他们取消其计划订阅。 +您删除定价计划后,用户将无法使用该计划购买您的应用程序。使用已删除定价计划的现有用户将继续使用该计划,直到他们取消其计划订阅。 {% note %} -**注意:** {% data variables.product.product_name %} 不能从已删除的定价计划中删除用户。 您可以推出一个活动,鼓励用户从已删除的定价计划升级或降级到新的定价计划。 +**注意:** {% data variables.product.product_name %} 不能从已删除的定价计划中删除用户。您可以推出一个活动,鼓励用户从已删除的定价计划升级或降级到新的定价计划。 {% endnote %} -您可以禁用 GitHub Marketplace 免费试用而不撤销定价计划,但这会阻止您在未来为该计划启动免费试用。 如果您选择禁用定价计划的免费试用,则已注册的用户仍可以完成其免费试用。 +您可以禁用 GitHub Marketplace 免费试用而不撤销定价计划,但这会阻止您在未来为该计划启动免费试用。如果您选择禁用定价计划的免费试用,则已注册的用户仍可以完成其免费试用。 -撤销定价计划后,您可以创建与已删除的定价计划同名的新定价计划。 例如,如果您有一个 "Pro" 定价计划,但需要更改统一价格,您可以删除该 "Pro" 定价计划,然后使用更新后的价格创建新的 "Pro" 定价计划。 用户将能够立即购买新的定价计划。 +撤销定价计划后,您可以创建与已删除的定价计划同名的新定价计划。例如,如果您有一个 "Pro" 定价计划,但需要更改统一价格,您可以删除该 "Pro" 定价计划,然后使用更新后的价格创建新的 "Pro" 定价计划。用户将能够立即购买新的定价计划。 -如果您不是经过验证的发布者,则无法更改应用的定价计划。 有关成为已验证发布者的详细信息,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 +如果您不是经过验证的发布者,则无法更改应用的定价计划。有关成为已验证发布者的详细信息,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 diff --git a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/submitting-your-listing-for-publication.md b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/submitting-your-listing-for-publication.md index 5217cb618f4b..b2deef10c39f 100644 --- a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/submitting-your-listing-for-publication.md +++ b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/submitting-your-listing-for-publication.md @@ -18,9 +18,9 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/10/2022 ms.locfileid: '145084960' --- -在您的应用程序上架信息满足 {% data variables.product.prodname_marketplace %} 要求后,您可以提交该应用程序。 关于应用上架要求的概述,请参阅“[上架应用的要求](/developers/github-marketplace/requirements-for-listing-an-app)”。 +在您的应用程序上架信息满足 {% data variables.product.prodname_marketplace %} 要求后,您可以提交该应用程序。关于应用上架要求的概述,请参阅“[上架应用的要求](/developers/github-marketplace/requirements-for-listing-an-app)”。 -1. 在应用上架信息页面的左上角,单击“概述”。 有关查找应用上架信息页面的信息,请参阅“[起草应用上架信息](/developers/github-marketplace/drafting-a-listing-for-your-app)”。 +1. 在应用上架信息页面的左上角,单击“概述”。有关查找应用上架信息页面的信息,请参阅“[起草应用上架信息](/developers/github-marketplace/drafting-a-listing-for-your-app)”。 ![Marketplace 上架信息草稿的选项概述](/assets/images/marketplace/edit-marketplace-listing-overview.png) diff --git a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/writing-a-listing-description-for-your-app.md b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/writing-a-listing-description-for-your-app.md index 28b9b22cb7fd..a4955370b6fd 100644 --- a/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/writing-a-listing-description-for-your-app.md +++ b/translations/zh-CN/content/developers/github-marketplace/listing-an-app-on-github-marketplace/writing-a-listing-description-for-your-app.md @@ -30,7 +30,7 @@ ms.locfileid: '146139254' ### 上架产品名称 -你的商品名称将显示在 [{% data variables.product.prodname_marketplace %} 主页](https://github.com/marketplace)上。 名称仅限于 255 个字符,可能与应用名称不同。 您的列表不能与 {% data variables.product.product_location %} 上现有的帐户同名,除非该名称是您自己的用户或组织名称。 +你的商品名称将显示在 [{% data variables.product.prodname_marketplace %} 主页](https://github.com/marketplace)上。名称仅限于 255 个字符,可能与应用名称不同。您的列表不能与 {% data variables.product.product_location %} 上现有的帐户同名,除非该名称是您自己的用户或组织名称。 ### 简短说明 @@ -40,11 +40,11 @@ ms.locfileid: '146139254' #### 长度 -我们建议将简短说明控制在 40-80 个字符。 尽管可以使用更多字符,但简洁的描述使客户更容易快速阅读和理解。 +我们建议将简短说明控制在 40-80 个字符。尽管可以使用更多字符,但简洁的描述使客户更容易快速阅读和理解。 #### 内容 -- 介绍应用程序的功能。 不要在此空间使用呼吁用语。 例如: +- 介绍应用程序的功能。不要在此空间使用呼吁用语。例如: 可以:针对 GitHub 问题的轻型项目管理 @@ -60,11 +60,11 @@ ms.locfileid: '146139254' #### 格式化 -- 始终使用句子大小写规则。 只大写第一个字母和专有名词。 +- 始终使用句子大小写规则。只大写第一个字母和专有名词。 -- 在简短说明的末尾不要使用标点符号。 简短说明不应包含完整的句子,并且绝对不能包含一个以上的句子。 +- 在简短说明的末尾不要使用标点符号。简短说明不应包含完整的句子,并且绝对不能包含一个以上的句子。 -- 仅大写专有名词。 例如: +- 仅大写专有名词。例如: 可以:One-click delivery automation for web developers @@ -78,7 +78,7 @@ ms.locfileid: '146139254' 不可:为组织的用户自动创建问题 -- 避免使用首字母缩写词,除非是约定俗成的缩写(如 API)。 例如: +- 避免使用首字母缩写词,除非是约定俗成的缩写(如 API)。例如: 可以:Agile task boards, estimates, and reports without leaving GitHub @@ -86,22 +86,22 @@ ms.locfileid: '146139254' ### 类别 -{% data variables.product.prodname_marketplace %} 中的应用程序可以按类别显示。 在“主要类别”下拉列表中选择最能描述应用的主要功能的类别,并(可选)选择适合应用的“辅助类别” 。 +{% data variables.product.prodname_marketplace %} 中的应用程序可以按类别显示。在“主要类别”下拉列表中选择最能描述应用的主要功能的类别,并(可选)选择适合应用的“辅助类别” 。 ### 支持的语言 -如果您的应用程序仅适用于特定语言,请选择它支持的最多 10 种编程语言。 这些语言显示在应用程序的 {% data variables.product.prodname_marketplace %} 上架信息页面上。 此字段可选。 +如果您的应用程序仅适用于特定语言,请选择它支持的最多 10 种编程语言。这些语言显示在应用程序的 {% data variables.product.prodname_marketplace %} 上架信息页面上。此字段可选。 ### 上架信息中的 URL **所需 URL** * 客户支持 URL:当客户进行技术支持、产品或帐户查询时,他们将访问的网页的 URL。 * 隐私策略 URL:显示应用的隐私策略的网页。 -* 安装 URL:仅针对 OAuth 应用显示此字段。 (GitHub 应用不使用此 URL,因为它们使用 GitHub 应用的设置页面中的可选设置 URL。)当客户购买 OAuth 应用时,GitHub 会在客户安装该应用后将其重定向到安装 URL。 需要将客户重定向到 `https://github.com/login/oauth/authorize` 以开始 OAuth 授权流。 有关更多详细信息,请参阅“[OAuth 应用的新购买](/marketplace/integrating-with-the-github-marketplace-api/handling-new-purchases-and-free-trials/)”。 如果您要上架 GitHub 应用程序,请跳过此字段。 +* 安装 URL:仅针对 OAuth 应用显示此字段。 (GitHub 应用不使用此 URL,因为它们使用 GitHub 应用的设置页面中的可选设置 URL。)当客户购买 OAuth 应用时,GitHub 会在客户安装该应用后将其重定向到安装 URL。需要将客户重定向到 `https://github.com/login/oauth/authorize` 以开始 OAuth 授权流。有关更多详细信息,请参阅“[OAuth 应用的新购买](/marketplace/integrating-with-the-github-marketplace-api/handling-new-purchases-and-free-trials/)”。如果您要上架 GitHub 应用程序,请跳过此字段。 **可选 URL** * 公司 URL:指向公司网站的链接。 -* 状态 URL:指向显示应用状态的网页的链接。 状态页面可以包括当前和历史事件报告、Web 应用程序正常运行时间状态以及预定维护。 +* 状态 URL:指向显示应用状态的网页的链接。状态页面可以包括当前和历史事件报告、Web 应用程序正常运行时间状态以及预定维护。 * 文档 URL:指向指导客户如何使用应用的文档的链接。 ## 徽标和特征卡 @@ -110,7 +110,7 @@ ms.locfileid: '146139254' ![GitHub Marketplace 徽标和徽章图像](/assets/images/marketplace/marketplace-logo-and-badge.png) -特征卡由应用程序的徽标、名称和自定义背景图像组成,可体现您的品牌个性。 如果你的应用是[主页](https://github.com/marketplace)顶部的四个随机特色应用之一,{% data variables.product.prodname_marketplace %} 将显示此卡片。 每个应用程序的简短说明显示在其特征卡的下方。 +特征卡由应用程序的徽标、名称和自定义背景图像组成,可体现您的品牌个性。如果你的应用是[主页](https://github.com/marketplace)顶部的四个随机特色应用之一,{% data variables.product.prodname_marketplace %} 将显示此卡片。每个应用程序的简短说明显示在其特征卡的下方。 ![特征卡](/assets/images/marketplace/marketplace_feature_card.png) @@ -118,25 +118,25 @@ ms.locfileid: '146139254' #### 徽标指南 -您必须上传徽标的自定义图像。 对于徽章,请选择背景颜色。 +您必须上传徽标的自定义图像。对于徽章,请选择背景颜色。 - 上传至少为 200 像素 x 200 像素的徽标图像,这样在发布上架信息时就不必放大徽标。 -- 徽标将被裁剪为正方形。 建议上传徽标居中的正方形图像文件。 +- 徽标将被裁剪为正方形。建议上传徽标居中的正方形图像文件。 - 为获得最佳效果,请上传透明背景的徽标图像。 - 要显示无缝徽章的外观,请选择与徽标图像的背景颜色(或透明度)匹配的徽章背景颜色。 -- 避免使用带有文字的徽标图像。 带有文字的徽标在小屏幕上缩放效果不佳。 +- 避免使用带有文字的徽标图像。带有文字的徽标在小屏幕上缩放效果不佳。 #### 特征卡指南 -您必须上传特征卡的自定义背景图像。 对于应用程序的名称,请选择文本颜色。 +您必须上传特征卡的自定义背景图像。对于应用程序的名称,请选择文本颜色。 -- 在背景图像中使用图案或纹理赋予卡片视觉特征,使其在 {% data variables.product.prodname_marketplace %} 主页的深色背景下引人注目。 特征卡应体现应用程序的品牌个性。 +- 在背景图像中使用图案或纹理赋予卡片视觉特征,使其在 {% data variables.product.prodname_marketplace %} 主页的深色背景下引人注目。特征卡应体现应用程序的品牌个性。 - 背景图像尺寸为 965 像素 x 482 像素(宽 x 高)。 - 为应用程序的名称选择文本颜色,使其清晰地显示在背景图像上。 ## 商品详细信息 -要获取应用程序的登录页面,请在 {% data variables.product.prodname_marketplace %} 主页或类别页面上单击应用程序的名称。 登录页面显示应用程序的较长说明,包括两个部分:“Introductory description(简介)”和“Detailed description(详细说明)”。 +要获取应用程序的登录页面,请在 {% data variables.product.prodname_marketplace %} 主页或类别页面上单击应用程序的名称。登录页面显示应用程序的较长说明,包括两个部分:“Introductory description(简介)”和“Detailed description(详细说明)”。 “Introductory description(简介)”显示在应用程序 {% data variables.product.prodname_marketplace %} 登录页面的顶部。 @@ -150,9 +150,9 @@ ms.locfileid: '146139254' ### 长度 -建议在[列出应用](/marketplace/listing-on-github-marketplace/)时,在所需的“介绍性说明”字段中编写 1-2 句简要摘要(介于 150-250 个字符之间)。 尽管可以使用更多字符,但简洁的概述使客户更容易快速阅读和理解。 +建议在[列出应用](/marketplace/listing-on-github-marketplace/)时,在所需的“介绍性说明”字段中编写 1-2 句简要摘要(介于 150-250 个字符之间)。尽管可以使用更多字符,但简洁的概述使客户更容易快速阅读和理解。 -您可以在可选的“Detailed description(详细说明)”字段中添加更多信息。 在单击应用登陆页上的介绍性说明下方的“阅读更多......”时,将看到此说明。 详细说明包含 3-5 个[价值主张](https://en.wikipedia.org/wiki/Value_proposition),每个主张用 1-2 个句子描述。 此说明最多可以使用 1,000 个字符。 +您可以在可选的“Detailed description(详细说明)”字段中添加更多信息。在单击应用登陆页上的介绍性说明下方的“阅读更多......”时,将看到此说明。详细说明包含 3-5 个[价值主张](https://en.wikipedia.org/wiki/Value_proposition),每个主张用 1-2 个句子描述。此说明最多可以使用 1,000 个字符。 ### 内容 @@ -162,13 +162,13 @@ ms.locfileid: '146139254' ### 格式化 -- 始终在价值主张标题中使用句子大小写规则。 只大写第一个字母和专有名词。 +- 始终在价值主张标题中使用句子大小写规则。只大写第一个字母和专有名词。 -- 在说明中使用句点。 避免使用感叹号。 +- 在说明中使用句点。避免使用感叹号。 -- 在价值主张标题的末尾不要使用标点符号。 价值主张标题不应包含完整的句子,并且不能包含一个以上的句子。 +- 在价值主张标题的末尾不要使用标点符号。价值主张标题不应包含完整的句子,并且不能包含一个以上的句子。 -- 对于每个价值主张,请在其标题后加上一段说明。 使用 Markdown 将标题的格式设置为[三级标头](/articles/basic-writing-and-formatting-syntax/#headings)。 例如: +- 对于每个价值主张,请在其标题后加上一段说明。使用 Markdown 将标题的格式设置为[三级标头](/articles/basic-writing-and-formatting-syntax/#headings)。例如: ### 学习所需的技能 @@ -188,14 +188,14 @@ ms.locfileid: '146139254' ## 产品屏幕截图 -您可以上传应用程序的最多五张屏幕截图,以显示在应用程序的登录页面上。 向每个屏幕截图添加可选标题以提供上下文。 上传屏幕截图后,您将其拖动到希望它们在登录页面上显示的位置。 +您可以上传应用程序的最多五张屏幕截图,以显示在应用程序的登录页面上。向每个屏幕截图添加可选标题以提供上下文。上传屏幕截图后,您将其拖动到希望它们在登录页面上显示的位置。 ### 屏幕截图指南 -- 图像必须具有高分辨率(至少 1200 像素宽)。 +- 图像必须具有高分辨率 (至少 1200 像素宽)。 - 所有图像必须具有相同的高度和宽度(宽高比),以避免用户切换图像时出现页面跳跃。 - 显示尽可能多的用户界面,以便用户看到应用程序执行的操作。 -- 在浏览器中截取应用程序的屏幕时,仅包括显示窗口中的内容。 避免包括地址栏、标题栏或工具栏图标,它们不能很好地适应较小的屏幕尺寸。 +- 在浏览器中截取应用程序的屏幕时,仅包括显示窗口中的内容。避免包括地址栏、标题栏或工具栏图标,它们不能很好地适应较小的屏幕尺寸。 - GitHub 在应用程序登录页面的图框中显示您上传的屏幕截图,因此您无需在屏幕截图周围添加图框或边框。 - 简短明快的字幕效果最好。 diff --git a/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/billing-customers.md b/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/billing-customers.md index 23c4c3527feb..26e410f91c88 100644 --- a/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/billing-customers.md +++ b/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/billing-customers.md @@ -1,6 +1,6 @@ --- title: 向客户计费 -intro: '{% data variables.product.prodname_marketplace %} 上的应用程序应遵守 GitHub 的计费指南并支持推荐的服务。 遵循我们的指南可帮助客户顺利完成帐单流程。' +intro: '{% data variables.product.prodname_marketplace %} 上的应用程序应遵守 GitHub 的计费指南并支持推荐的服务。遵循我们的指南可帮助客户顺利完成帐单流程。' redirect_from: - /apps/marketplace/administering-listing-plans-and-user-accounts/billing-customers-in-github-marketplace - /apps/marketplace/selling-your-app/billing-customers-in-github-marketplace @@ -20,7 +20,7 @@ ms.locfileid: '145084957' --- ## 了解结算周期 -客户在购买您的应用程序时可选择月度或年度结算周期、 客户对计费周期所做的所有更改和计划选择都会触发 `marketplace_purchase` 事件。 可以参考 `marketplace_purchase` Webhook 有效负载来查看客户选择的计费周期,以及下一个计费日期的开始时间 (`effective_date`)。 有关 Webhook 有效负载的详细信息,请参阅“[{% data variables.product.prodname_marketplace %} API 的 Webhook 事件](/developers/github-marketplace/webhook-events-for-the-github-marketplace-api)”。 +客户在购买您的应用程序时可选择月度或年度结算周期、客户对计费周期所做的所有更改和计划选择都会触发 `marketplace_purchase` 事件。可以参考 `marketplace_purchase` Webhook 有效负载来查看客户选择的计费周期,以及下一个计费日期的开始时间 (`effective_date`)。有关 Webhook 有效负载的详细信息,请参阅“[{% data variables.product.prodname_marketplace %} API 的 Webhook 事件](/developers/github-marketplace/webhook-events-for-the-github-marketplace-api)”。 ## 在应用程序 UI 中提供帐单服务 @@ -30,13 +30,13 @@ ms.locfileid: '145084957' ## 升级、降级和取消的帐单服务 -请遵循以下升级、降级和取消指南,以维护清晰一致的帐单流程。 有关 {% data variables.product.prodname_marketplace %} 购买事件的更详细说明,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 +请遵循以下升级、降级和取消指南,以维护清晰一致的帐单流程。有关 {% data variables.product.prodname_marketplace %} 购买事件的更详细说明,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 可以使用 `marketplace_purchase` Webhook 的 `effective_date` 键来确定计划更改发生的时间并定期同步[列出计划的帐户](/rest/reference/apps#list-accounts-for-a-plan)。 ### 升级 -当客户升级其定价计划或将其结算周期从每月更改为每年时,您应立即使更改对他们生效。 您需要对新计划应用按比例的折扣并更改结算周期。 +当客户升级其定价计划或将其结算周期从每月更改为每年时,您应立即使更改对他们生效。您需要对新计划应用按比例的折扣并更改结算周期。 {% data reusables.marketplace.marketplace-failed-purchase-event %} @@ -44,7 +44,7 @@ ms.locfileid: '145084957' ### 降级和取消 -当客户从付费计划转为免费计划、选择成本比其当前计划低的计划或将结算周期从每年更改为每月时,就会发生降级。 当降级或取消发生时,您不需要提供退款。 相反,当前计划将保持有效状态,直到当前结算周期的最后一天。 `marketplace_purchase` 事件将在新计划生效,即在客户的下一个结算周期开始时发送。 +当客户从付费计划转为免费计划、选择成本比其当前计划低的计划或将结算周期从每年更改为每月时,就会发生降级。当降级或取消发生时,您不需要提供退款。相反,当前计划将保持有效状态,直到当前结算周期的最后一天。 `marketplace_purchase` 事件将在新计划生效,即在客户的下一个结算周期开始时发送。 当客户取消计划时,您必须: - 自动降级到免费计划(如果有)。 diff --git a/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/pricing-plans-for-github-marketplace-apps.md b/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/pricing-plans-for-github-marketplace-apps.md index bbf5297755b0..9d64597382e3 100644 --- a/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/pricing-plans-for-github-marketplace-apps.md +++ b/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/pricing-plans-for-github-marketplace-apps.md @@ -1,6 +1,6 @@ --- title: GitHub Marketplace 应用程序的定价计划 -intro: '定价计划允许您为应用程序提供不同级别的服务或资源。 您可以在 {% data variables.product.prodname_marketplace %} 上架信息中提供最多 10 个定价计划。' +intro: '定价计划允许您为应用程序提供不同级别的服务或资源。您可以在 {% data variables.product.prodname_marketplace %} 上架信息中提供最多 10 个定价计划。' redirect_from: - /apps/marketplace/selling-your-app/github-marketplace-pricing-plans - /marketplace/selling-your-app/github-marketplace-pricing-plans @@ -18,11 +18,11 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/09/2022 ms.locfileid: '147876069' --- -{% data variables.product.prodname_marketplace %} 定价计划可以是免费、统一定价或每单位定价。 价格以美元设置、显示和处理。 付费计划仅限验证的发布者发布的应用。 有关成为已验证发布者的详细信息,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 +{% data variables.product.prodname_marketplace %} 定价计划可以是免费、统一定价或每单位定价。价格以美元设置、显示和处理。付费计划仅限验证的发布者发布的应用。有关成为已验证发布者的详细信息,请参阅“[为组织申请发布者验证](/developers/github-marketplace/applying-for-publisher-verification-for-your-organization)”。 -客户使用附加到其在 {% data variables.product.product_location %} 上帐户的付款方式购买您的应用程序,而不必离开 {% data variables.product.prodname_dotcom_the_website %}。 您不必编写代码来执行结算交易,但必须处理来自 {% data variables.product.prodname_marketplace %} API 的事件。 有关详细信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 +客户使用附加到其在 {% data variables.product.product_location %} 上帐户的付款方式购买您的应用程序,而不必离开 {% data variables.product.prodname_dotcom_the_website %}。您不必编写代码来执行结算交易,但必须处理来自 {% data variables.product.prodname_marketplace %} API 的事件。有关详细信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 -如果您在 {% data variables.product.prodname_marketplace %} 中上架的应用程序有多个计划选项,您可以设置相应的定价计划。 例如,如果您的应用程序有两个计划选项:开源计划和专业计划,您可以为开源计划设置一个免费定价计划,为专业计划设置一个统一定价计划。 每个 {% data variables.product.prodname_marketplace %} 上架产品必须为列出的每个计划提供年度和月度价格。 +如果您在 {% data variables.product.prodname_marketplace %} 中上架的应用程序有多个计划选项,您可以设置相应的定价计划。例如,如果您的应用程序有两个计划选项:开源计划和专业计划,您可以为开源计划设置一个免费定价计划,为专业计划设置一个统一定价计划。每个 {% data variables.product.prodname_marketplace %} 上架产品必须为列出的每个计划提供年度和月度价格。 有关如何创建定价计划的详细信息,请参阅“[设置 {% data variables.product.prodname_marketplace %} 上架的定价计划](/marketplace/listing-on-github-marketplace/setting-a-github-marketplace-listing-s-pricing-plan/)”。 @@ -34,9 +34,9 @@ ms.locfileid: '147876069' {% data reusables.marketplace.free-apps-encouraged %} -免费计划对用户完全免费。 如果您设置免费定价计划,则无法向选择免费定价计划的用户收取使用应用程序的费用。 您可以为上架产品同时创建免费和付费计划。 +免费计划对用户完全免费。如果您设置免费定价计划,则无法向选择免费定价计划的用户收取使用应用程序的费用。您可以为上架产品同时创建免费和付费计划。 -所有应用程序都需要处理新购买和取消事件。 仅含免费计划的应用程序无需处理免费试用、升级和降级事件。 有关详细信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 +所有应用程序都需要处理新购买和取消事件。仅含免费计划的应用程序无需处理免费试用、升级和降级事件。有关详细信息,请参阅“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 如果您向已作为免费服务在 {% data variables.product.prodname_marketplace %} 中上架的应用程序添加付费计划,则需要请求验证应用程序并完成财务手续。 @@ -48,13 +48,13 @@ ms.locfileid: '147876069' - 每单位定价计划按月或按年向您指定的单位收取固定费用。 “单位”可以是您愿意指定的任何对象(例如用户、席位或人员)。 -您可能还希望提供免费试用。 这些选项为客户提供为期 14 天免费试用 OAuth 或 GitHub 应用程序的机会。 设置 Marketplace 定价计划时,您可以选择为统一定价或每单位定价计划提供免费试用选项。 +您可能还希望提供免费试用。这些选项为客户提供为期 14 天免费试用 OAuth 或 GitHub 应用程序的机会。设置 Marketplace 定价计划时,您可以选择为统一定价或每单位定价计划提供免费试用选项。 ## 免费试用 -客户可以免费试用 Marketplace 上架产品中包含免费试用选项的任何付费计划。 但是,客户不能对一个 Marketplace 产品使用多次免费试用机会。 +客户可以免费试用 Marketplace 上架产品中包含免费试用选项的任何付费计划。但是,客户不能对一个 Marketplace 产品使用多次免费试用机会。 -免费试用的固定期限为 14 天。 客户在试用期结束前 4 天(免费试用期第 11 天)收到通知,他们的计划将升级。 在免费试用结束时,如果客户不取消,他们将自动注册到他们正在试用的计划中。 +免费试用的固定期限为 14 天。客户在试用期结束前 4 天(免费试用期第 11 天)收到通知,他们的计划将升级。在免费试用结束时,如果客户不取消,他们将自动注册到他们正在试用的计划中。 有关详细信息,请参阅“[处理新购买和免费试用](/developers/github-marketplace/handling-new-purchases-and-free-trials/)”。 diff --git a/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/receiving-payment-for-app-purchases.md b/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/receiving-payment-for-app-purchases.md index af2b5af79589..cb0b562f9d4e 100644 --- a/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/receiving-payment-for-app-purchases.md +++ b/translations/zh-CN/content/developers/github-marketplace/selling-your-app-on-github-marketplace/receiving-payment-for-app-purchases.md @@ -23,9 +23,9 @@ ms.locfileid: '145084953' --- 为含有付费计划的应用程序创建 {% data variables.product.prodname_marketplace %} 上架信息并得到批准后,您需要向 {% data variables.product.product_name %} 提供付款详细信息以完成财务手续。 -一旦您当月的收入达到最低 500 美元,您将收到 {% data variables.product.company_short %} 的电子付款。 此金额为 Marketplace 交易的收入减去 {% data variables.product.company_short %} 为顾及运营成本而收取的金额。 +一旦您当月的收入达到最低 500 美元,您将收到 {% data variables.product.company_short %} 的电子付款。此金额为 Marketplace 交易的收入减去 {% data variables.product.company_short %} 为顾及运营成本而收取的金额。 -对于 2021 年 1 月 1 日之前发生的交易,{% data variables.product.company_short %} 扣留交易收入的 25%。 对于该日期之后发生的交易,{% data variables.product.company_short %} 仅扣留 5%。 这一变化将反映在 2021 年 1 月底收到的付款中。 +对于 2021 年 1 月 1 日之前发生的交易,{% data variables.product.company_short %} 扣留交易收入的 25%。对于该日期之后发生的交易,{% data variables.product.company_short %} 仅扣留 5%。这一变化将反映在 2021 年 1 月底收到的付款中。 {% note %} diff --git a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-new-purchases-and-free-trials.md b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-new-purchases-and-free-trials.md index 37e0e38ac898..2376214a71d0 100644 --- a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-new-purchases-and-free-trials.md +++ b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-new-purchases-and-free-trials.md @@ -22,13 +22,13 @@ ms.locfileid: '145084952' --- {% warning %} -如果在 {% data variables.product.prodname_marketplace %} 中提供 {% data variables.product.prodname_github_app %},您的应用程序必须按照 OAuth 授权流程来识别用户。 您不需要设置单独的 {% data variables.product.prodname_oauth_app %} 来支持此流程。 有关详细信息,请参阅“[识别和授权 {% data variables.product.prodname_github_apps %} 的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 +如果在 {% data variables.product.prodname_marketplace %} 中提供 {% data variables.product.prodname_github_app %},您的应用程序必须按照 OAuth 授权流程来识别用户。您不需要设置单独的 {% data variables.product.prodname_oauth_app %} 来支持此流程。有关详细信息,请参阅“[识别和授权 {% data variables.product.prodname_github_apps %} 的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”。 {% endwarning %} -## 步骤 1。 首次购买和 web 挂钩事件 +## 步骤 1。首次购买和 web 挂钩事件 -客户在购买 {% data variables.product.prodname_marketplace %} 应用之前,需要选择[上架产品计划](/marketplace/selling-your-app/github-marketplace-pricing-plans/)。 他们还要选择是从个人帐户还是从组织帐户购买应用程序。 +客户在购买 {% data variables.product.prodname_marketplace %} 应用之前,需要选择[上架产品计划](/marketplace/selling-your-app/github-marketplace-pricing-plans/)。他们还要选择是从个人帐户还是从组织帐户购买应用程序。 客户通过单击“完成订单并开始安装”来完成购买。 @@ -36,23 +36,23 @@ ms.locfileid: '145084952' 从 `marketplace_purchase` Webhook 读取 `effective_date` 和 `marketplace_purchase` 对象,以确定客户购买了哪个计划、何时开始计费周期以及何时开始下一个计费周期。 -如果应用提供免费试用版,则从 Webhook 读取 `marketplace_purchase[on_free_trial]` 属性。 如果该值为 `true`,则应用需要跟踪免费试用开始日期 (`effective_date`) 和免费试用结束日期 (`free_trial_ends_on`)。 使用 `free_trial_ends_on` 日期在应用的 UI 中显示免费试用剩余天数。 可以在横幅或[计费 UI](/marketplace/selling-your-app/billing-customers-in-github-marketplace/#providing-billing-services-in-your-apps-ui)中显示。 若要了解如何在免费试用结束前处理取消,请参阅“[处理计划取消](/developers/github-marketplace/handling-plan-cancellations)”。 请参阅“[处理计划更改](/developers/github-marketplace/handling-plan-changes)”,了解在免费试用期满后如何从免费试用版过渡到付费计划。 +如果应用提供免费试用版,则从 Webhook 读取 `marketplace_purchase[on_free_trial]` 属性。如果该值为 `true`,则应用需要跟踪免费试用开始日期 (`effective_date`) 和免费试用结束日期 (`free_trial_ends_on`)。使用 `free_trial_ends_on` 日期在应用的 UI 中显示免费试用剩余天数。可以在横幅或[计费 UI](/marketplace/selling-your-app/billing-customers-in-github-marketplace/#providing-billing-services-in-your-apps-ui)中显示。若要了解如何在免费试用结束前处理取消,请参阅“[处理计划取消](/developers/github-marketplace/handling-plan-cancellations)”。请参阅“[处理计划更改](/developers/github-marketplace/handling-plan-changes)”,了解在免费试用期满后如何从免费试用版过渡到付费计划。 有关 `marketplace_purchase` 事件有效负载的示例,请参阅“[{% data variables.product.prodname_marketplace %} Webhook 事件](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)”。 ## 步骤 2. 安装 -如果您的应用程序是 {% data variables.product.prodname_github_app %}, {% data variables.product.product_name %} 在客户购买时会提示他们选择应用程序可以访问哪些仓库。 然后,{% data variables.product.product_name %} 将应用程序安装在客户选择的帐户上,并授予对所选仓库的访问权限。 +如果您的应用程序是 {% data variables.product.prodname_github_app %}, {% data variables.product.product_name %} 在客户购买时会提示他们选择应用程序可以访问哪些仓库。然后,{% data variables.product.product_name %} 将应用程序安装在客户选择的帐户上,并授予对所选仓库的访问权限。 -此时,如果你在 {% data variables.product.prodname_github_app %} 设置中指定了“设置 URL”,则 {% data variables.product.product_name %} 将客户重定向到该 URL。 如果您没有指定设置 URL,则无法处理购买 {% data variables.product.prodname_github_app %} 的购买。 +此时,如果你在 {% data variables.product.prodname_github_app %} 设置中指定了“设置 URL”,则 {% data variables.product.product_name %} 将客户重定向到该 URL。如果您没有指定设置 URL,则无法处理购买 {% data variables.product.prodname_github_app %} 的购买。 {% note %} -注意:“设置 URL”在 {% data variables.product.prodname_github_app %} 设置中被描述为可选字段,但如果你要在 {% data variables.product.prodname_marketplace %} 中提供应用,则它为必填字段 。 +注意:“设置 URL”在 {% data variables.product.prodname_github_app %} 设置中被描述为可选字段,但如果你要在 {% data variables.product.prodname_marketplace %} 中提供应用,则它为必填字段。 {% endnote %} -如果您的应用程序是 {% data variables.product.prodname_oauth_app %},{% data variables.product.product_name %} 不会在任何地方安装它。 相反,{% data variables.product.product_name %} 会将客户重定向到你在 [{% data variables.product.prodname_marketplace %} 上架信息](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/#listing-urls)中指定的安装 URL。 +如果您的应用程序是 {% data variables.product.prodname_oauth_app %},{% data variables.product.product_name %} 不会在任何地方安装它。相反,{% data variables.product.product_name %} 会将客户重定向到你在 [{% data variables.product.prodname_marketplace %} 上架信息](/marketplace/listing-on-github-marketplace/writing-github-marketplace-listing-descriptions/#listing-urls)中指定的安装 URL。 当客户购买 {% data variables.product.prodname_oauth_app %} 时,{% data variables.product.product_name %} 会将客户重定向到你选择的 URL(设置 URL 或安装 URL),并且该 URL 会以查询参数的形式加入客户选择的定价计划:`marketplace_listing_plan_id`。 @@ -60,30 +60,30 @@ ms.locfileid: '145084952' 当客户购买您的应用程序时,您必须通过 OAuth 授权流程发送客户: -* 如果应用是 {% data variables.product.prodname_github_app %},只要 {% data variables.product.product_name %} 将客户重定向到设置 URL 便开始授权流。 按照“[识别和授权 {% data variables.product.prodname_github_apps %} 的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”中的步骤操作。 +* 如果应用是 {% data variables.product.prodname_github_app %},只要 {% data variables.product.product_name %} 将客户重定向到设置 URL 便开始授权流。按照“[识别和授权 {% data variables.product.prodname_github_apps %} 的用户](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)”中的步骤操作。 -* 如果应用是 {% data variables.product.prodname_oauth_app %},只要 {% data variables.product.product_name %} 将客户重定向到安装 URL 便开始授权流。 按照“[授权 {% data variables.product.prodname_oauth_apps %}](/apps/building-oauth-apps/authorizing-oauth-apps/)”中的步骤操作。 +* 如果应用是 {% data variables.product.prodname_oauth_app %},只要 {% data variables.product.product_name %} 将客户重定向到安装 URL 便开始授权流。按照“[授权 {% data variables.product.prodname_oauth_apps %}](/apps/building-oauth-apps/authorizing-oauth-apps/)”中的步骤操作。 对于任一类型的应用,第一步都是将客户重定向到 [https://github.com/login/oauth/authorize](https://github.com/login/oauth/authorize)。 -客户完成授权后,您的应用程序将收到客户的 OAuth 访问令牌。 下一步将需要使用此令牌。 +客户完成授权后,您的应用程序将收到客户的 OAuth 访问令牌。下一步将需要使用此令牌。 {% note %} -注意:授权客户免费试用时,请授予他们与付费计划相同的访问权限。 试用期结束后,将其移至付费计划。 +注意:授权客户免费试用时,请授予他们与付费计划相同的访问权限。试用期结束后,将其移至付费计划。 {% endnote %} ## 步骤 4. 预配客户帐户 -您的应用程序必须为所有新购买预配客户帐户。 使用在[步骤 3. 授权](#step-3-authorization)中收到的客户访问令牌,调用“[列出经验证用户的订阅](/rest/reference/apps#list-subscriptions-for-the-authenticated-user)”终结点。 响应将包括客户的 `account` 信息,并显示他们是否在使用免费试用版 (`on_free_trial`)。 使用此信息完成设置和预配。 +您的应用程序必须为所有新购买预配客户帐户。使用在[步骤 3. 授权](#step-3-authorization)中收到的客户访问令牌,调用“[列出经验证用户的订阅](/rest/reference/apps#list-subscriptions-for-the-authenticated-user)”终结点。响应将包括客户的 `account` 信息,并显示他们是否在使用免费试用版 (`on_free_trial`)。使用此信息完成设置和预配。 {% data reusables.marketplace.marketplace-double-purchases %} 如果客户是为组织按用户购买应用程序,您可以提示客户选择哪些组织成员将有权访问所购买的应用程序。 -您可以自定义组织成员获取应用程序访问权限的方式。 以下是一些建议: +您可以自定义组织成员获取应用程序访问权限的方式。以下是一些建议: 统一定价:如果组织使用统一定价购买应用,你的应用可通过 API [获取组织的所有成员](/rest/reference/orgs#list-organization-members),并提示组织管理员选择哪些成员的集成者一方包含付费用户。 -按单位定价:一种按单位预配席位的方法,允许用户在登录应用时占用一个席位。 一旦客户达到席位数阈值,您的应用程序就可以提醒用户他们需要通过 {% data variables.product.prodname_marketplace %} 进行升级。 +按单位定价:一种按单位预配席位的方法,允许用户在登录应用时占用一个席位。一旦客户达到席位数阈值,您的应用程序就可以提醒用户他们需要通过 {% data variables.product.prodname_marketplace %} 进行升级。 diff --git a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-plan-cancellations.md b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-plan-cancellations.md index 31532f30ba88..c185f426d641 100644 --- a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-plan-cancellations.md +++ b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-plan-cancellations.md @@ -21,9 +21,9 @@ ms.locfileid: '145084949' --- 有关与计费相关的取消的更多信息,请参阅“[在 {% data variables.product.prodname_marketplace %} 中向客户计费](/apps//marketplace/administering-listing-plans-and-user-accounts/billing-customers-in-github-marketplace)”。 -## 步骤 1。 取消事件 +## 步骤 1。取消事件 -如果客户选择取消 {% data variables.product.prodname_marketplace %} 订单,则在取消生效时,GitHub 会向你的应用发送带有操作 `cancelled` 的 [`marketplace_purchase`](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/) Webhook。 如果客户在免费试用期间取消,您的应用程序将立即收到此事件。 如果客户取消付费计划,则取消将在客户结算周期结束时生效。 +如果客户选择取消 {% data variables.product.prodname_marketplace %} 订单,则在取消生效时,GitHub 会向你的应用发送带有操作 `cancelled` 的 [`marketplace_purchase`](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/) Webhook。如果客户在免费试用期间取消,您的应用程序将立即收到此事件。如果客户取消付费计划,则取消将在客户结算周期结束时生效。 ## 步骤 2. 停用客户帐户 @@ -36,6 +36,6 @@ ms.locfileid: '145084949' {% note %} -注意:建议使用 [`marketplace_purchase`](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/) webhook 的 `effective_date` 来确定计划更改的时间并定期同步[计划的帐户列表](/rest/reference/apps#list-accounts-for-a-plan)。 有关 Webhook 的详细信息,请参阅“[{% data variables.product.prodname_marketplace %} Webhook 事件](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)”。 +注意:建议使用 [`marketplace_purchase`](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/) webhook 的 `effective_date` 来确定计划更改的时间并定期同步[计划的帐户列表](/rest/reference/apps#list-accounts-for-a-plan)。有关 Webhook 的详细信息,请参阅“[{% data variables.product.prodname_marketplace %} Webhook 事件](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)”。 {% endnote %} diff --git a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-plan-changes.md b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-plan-changes.md index 2d32920b28c8..e57bab71e498 100644 --- a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-plan-changes.md +++ b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/handling-plan-changes.md @@ -20,26 +20,26 @@ ms.locfileid: '145129015' --- 有关与计费相关的升级和降级的详细信息,请参阅“[与 {% data variables.product.prodname_marketplace %} API 集成](/marketplace/integrating-with-the-github-marketplace-api/)”。 -## 步骤 1。 定价计划更改事件 +## 步骤 1。定价计划更改事件 当客户对其 {% data variables.product.prodname_marketplace %} 订单进行以下任何更改时,GitHub 会将带有 `changed` 操作的 `marketplace_purchase` Webhook 发送到你的应用: * 升级到更昂贵的定价计划或降级到价格较低的计划。 * 在其现有计划中增加或删除席位。 * 更改结算周期。 -更改生效时,GitHub 将发送 web 挂钩。 例如,当客户降级计划时,GitHub 会在客户的结算周期结束时发送 web 挂钩。 当客户升级其计划以便立即访问新服务时,GitHub 会立即向您的应用程序发送 web 挂钩。 如果客户从月度结算周期切换到年度结算周期,则视为升级。 请参阅“[{% data variables.product.prodname_marketplace %} 中的计费客户](/marketplace/selling-your-app/billing-customers-in-github-marketplace/)”,详细了解哪些操作被视为升级,哪些操作被视为降级。 +更改生效时,GitHub 将发送 web 挂钩。例如,当客户降级计划时,GitHub 会在客户的结算周期结束时发送 web 挂钩。当客户升级其计划以便立即访问新服务时,GitHub 会立即向您的应用程序发送 web 挂钩。如果客户从月度结算周期切换到年度结算周期,则视为升级。请参阅“[{% data variables.product.prodname_marketplace %} 中的计费客户](/marketplace/selling-your-app/billing-customers-in-github-marketplace/)”,详细了解哪些操作被视为升级,哪些操作被视为降级。 -读取 `marketplace_purchase` Webhook 中的 `effective_date`、`marketplace_purchase` 和 `previous_marketplace_purchase` 以更新计划的开始日期并更改客户的计费周期和定价计划。 有关 `marketplace_purchase` 事件有效负载的示例,请参阅“[{% data variables.product.prodname_marketplace %} Webhook 事件](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)”。 +读取 `marketplace_purchase` Webhook 中的 `effective_date`、`marketplace_purchase` 和 `previous_marketplace_purchase` 以更新计划的开始日期并更改客户的计费周期和定价计划。有关 `marketplace_purchase` 事件有效负载的示例,请参阅“[{% data variables.product.prodname_marketplace %} Webhook 事件](/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events/)”。 -如果应用提供免费试用版,则你将在免费试用版到期时收到带有 `changed` 操作的 `marketplace_purchase` Webhook。 如果客户的免费试用到期,则将客户升级到免费试用计划的付费版本。 +如果应用提供免费试用版,则你将在免费试用版到期时收到带有 `changed` 操作的 `marketplace_purchase` Webhook。如果客户的免费试用到期,则将客户升级到免费试用计划的付费版本。 ## 步骤 2. 更新客户账户 -您需要更新客户的帐户信息,以反映客户对其 {% data variables.product.prodname_marketplace %} 订单所做的结算周期和定价计划更改。 收到 `changed` 操作 Webhook 时,Marketplace 应用的网站或应用的 UI 上会显示定价计划、`seat_count`(对于每单位定价计划)和计费周期的升级。 +您需要更新客户的帐户信息,以反映客户对其 {% data variables.product.prodname_marketplace %} 订单所做的结算周期和定价计划更改。收到 `changed` 操作 Webhook 时,Marketplace 应用的网站或应用的 UI 上会显示定价计划、`seat_count`(对于每单位定价计划)和计费周期的升级。 当客户降级计划时,建议查看客户是否超出了计划限制,然后直接在您的 UI 中与他们互动,或者通过电话或电子邮件与他们联系。 -要鼓励用户升级,您可以在应用程序的 UI 中显示升级 URL。 有关更多详细信息,请参阅“[关于升级 URL](#about-upgrade-urls)”。 +要鼓励用户升级,您可以在应用程序的 UI 中显示升级 URL。有关更多详细信息,请参阅“[关于升级 URL](#about-upgrade-urls)”。 {% note %} @@ -59,9 +59,9 @@ ms.locfileid: '145129015' https://www.github.com/marketplace//upgrade// ``` -例如,如果您发现某个客户需要从 5 人计划转换到 10 人计划,您可以在应用程序 UI 中显示一个“升级指南”按钮,或者显示包含升级 URL 链接的横幅。 升级 URL 可将客户带到您的上架产品计划的升级确认页面。 +例如,如果您发现某个客户需要从 5 人计划转换到 10 人计划,您可以在应用程序 UI 中显示一个“升级指南”按钮,或者显示包含升级 URL 链接的横幅。升级 URL 可将客户带到您的上架产品计划的升级确认页面。 -将 `LISTING_PLAN_NUMBER` 用于客户想要购买的计划。 新建定价计划时,他们会收到 `LISTING_PLAN_NUMBER`(对于上架产品中每个计划而言是唯一的)和 `LISTING_PLAN_ID`(对于 {% data variables.product.prodname_marketplace %} 中每个计划而言是唯一的)。 在[列出计划](/rest/reference/apps#list-plans)(用于标识上架产品的定价计划)时,可以找到这些数字。 使用 `LISTING_PLAN_ID` 和“[列出计划帐户](/rest/reference/apps#list-accounts-for-a-plan)”终结点获取 `CUSTOMER_ACCOUNT_ID`。 +将 `LISTING_PLAN_NUMBER` 用于客户想要购买的计划。新建定价计划时,他们会收到 `LISTING_PLAN_NUMBER`(对于上架产品中每个计划而言是唯一的)和 `LISTING_PLAN_ID`(对于 {% data variables.product.prodname_marketplace %} 中每个计划而言是唯一的)。在[列出计划](/rest/reference/apps#list-plans)(用于标识上架产品的定价计划)时,可以找到这些数字。使用 `LISTING_PLAN_ID` 和“[列出计划帐户](/rest/reference/apps#list-accounts-for-a-plan)”终结点获取 `CUSTOMER_ACCOUNT_ID`。 {% note %} diff --git a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/testing-your-app.md b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/testing-your-app.md index 6163f1b6db5e..415c114666f8 100644 --- a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/testing-your-app.md +++ b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/testing-your-app.md @@ -1,6 +1,6 @@ --- title: 测试应用程序 -intro: 'GitHub 建议在将上架信息提交到 {% data variables.product.prodname_marketplace %} 之前,先使用 API 和 web 挂钩测试您的应用,以便为客户提供理想的体验。 在上架专家批准您的应用程序之前,它必须能够完全处理帐单流程。' +intro: 'GitHub 建议在将上架信息提交到 {% data variables.product.prodname_marketplace %} 之前,先使用 API 和 web 挂钩测试您的应用,以便为客户提供理想的体验。在上架专家批准您的应用程序之前,它必须能够完全处理帐单流程。' redirect_from: - /apps/marketplace/testing-apps-apis-and-webhooks - /apps/marketplace/integrating-with-the-github-marketplace-api/testing-github-marketplace-apps @@ -20,13 +20,13 @@ ms.locfileid: '145098015' --- ## 测试应用程序 -您可以使用 {% data variables.product.prodname_marketplace %} 上架草稿来模拟每个帐单流程。 上架信息处于草稿状态意味着它尚未提交以供审批。 使用 {% data variables.product.prodname_marketplace %} 草拟列表进行的任何购买都不会产生真正的交易,GitHub 不会从信用卡中扣款。 请注意,您只能模拟在列表草案中公布的计划的购买情况,而不能模拟计划草案中的购买情况。 有关详细信息,请参阅“[为应用草拟列表](/developers/github-marketplace/drafting-a-listing-for-your-app)”和“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 +您可以使用 {% data variables.product.prodname_marketplace %} 上架草稿来模拟每个帐单流程。上架信息处于草稿状态意味着它尚未提交以供审批。使用 {% data variables.product.prodname_marketplace %} 草拟列表进行的任何购买都不会产生真正的交易,GitHub 不会从信用卡中扣款。请注意,您只能模拟在列表草案中公布的计划的购买情况,而不能模拟计划草案中的购买情况。有关详细信息,请参阅“[为应用草拟列表](/developers/github-marketplace/drafting-a-listing-for-your-app)”和“[在应用中使用 {% data variables.product.prodname_marketplace %} API](/developers/github-marketplace/using-the-github-marketplace-api-in-your-app)”。 ### 使用带有上架草稿的开发应用程序来测试更改 -{% data variables.product.prodname_marketplace %} 上架信息只能与单个应用程序注册相关联,并且每个应用程序只能访问它自己的 {% data variables.product.prodname_marketplace %} 上架信息。 出于这些原因,我们建议配置一个与生产应用程序配置相同的单独的开发应用程序,并创建可用于测试的 {% data variables.product.prodname_marketplace %} 草拟列表。 {% data variables.product.prodname_marketplace %} 草稿允许您测试更改而不影响生产应用程序的活动用户。 您无需提交开发 {% data variables.product.prodname_marketplace %} 上架信息,因为它仅用于测试。 +{% data variables.product.prodname_marketplace %} 上架信息只能与单个应用程序注册相关联,并且每个应用程序只能访问它自己的 {% data variables.product.prodname_marketplace %} 上架信息。出于这些原因,我们建议配置一个与生产应用程序配置相同的单独的开发应用程序,并创建可用于测试的 {% data variables.product.prodname_marketplace %} 草拟列表。 {% data variables.product.prodname_marketplace %} 草稿允许您测试更改而不影响生产应用程序的活动用户。您无需提交开发 {% data variables.product.prodname_marketplace %} 上架信息,因为它仅用于测试。 -由于只能为公共应用程序创建 {% data variables.product.prodname_marketplace %} 上架草稿,因此您必须将开发应用程序设为公共。 公共应用程序不会在已发布的 {% data variables.product.prodname_marketplace %} 上架信息之外被发现,只要您不分享该应用程序的 URL。 处于草稿状态的 Marketplace 上架信息仅对应用程序的所有者可见。 +由于只能为公共应用程序创建 {% data variables.product.prodname_marketplace %} 上架草稿,因此您必须将开发应用程序设为公共。公共应用程序不会在已发布的 {% data variables.product.prodname_marketplace %} 上架信息之外被发现,只要您不分享该应用程序的 URL。处于草稿状态的 Marketplace 上架信息仅对应用程序的所有者可见。 一旦有了带有上架草稿的开发应用程序,就可以在与 {% data variables.product.prodname_marketplace %} API 和 web 挂钩集成的同时,使用它来测试您对应用程序所做的更改。 @@ -38,14 +38,14 @@ ms.locfileid: '145098015' ### 模拟 Marketplace 购买事件 -您的测试场景可能需要设置可提供免费试用并且可在免费和付费订阅之间切换的上架计划。 由于降级和取消要到下一个结算周期才会生效,因此 GitHub 提供一个开发人员专用功能“应用待处理更改”,以强制 `changed` 和 `cancelled` 计划操作立即生效。 对于带有 Marketplace 草拟列表的应用,可以在 https://github.com/settings/billing#pending-cycle: 中访问“应用待处理更改” +您的测试场景可能需要设置可提供免费试用并且可在免费和付费订阅之间切换的上架计划。由于降级和取消要到下一个结算周期才会生效,因此 GitHub 提供一个开发人员专用功能“应用待处理更改”,以强制 `changed` 和 `cancelled` 计划操作立即生效。对于带有 Marketplace 草拟列表的应用,可以在 https://github.com/settings/billing#pending-cycle: 中访问“应用待处理更改” ![应用待处理更改](/assets/images/github-apps/github-apps-apply-pending-changes.png) ## 测试 API -对于大多数 {% data variables.product.prodname_marketplace %} API 端点,我们还提供存根 API 端点,它们返回可用于测试的硬编码假数据。 若要接收存根数据,必须指定存根 URL,其路由中包括 `/stubbed`(例如,`/user/marketplace_purchases/stubbed`)。 有关支持此存根数据方法的终结点的列表,请参阅 [{% data variables.product.prodname_marketplace %} 终结点](/rest/reference/apps#github-marketplace)。 +对于大多数 {% data variables.product.prodname_marketplace %} API 端点,我们还提供存根 API 端点,它们返回可用于测试的硬编码假数据。若要接收存根数据,必须指定存根 URL,其路由中包括 `/stubbed`(例如,`/user/marketplace_purchases/stubbed`)。有关支持此存根数据方法的终结点的列表,请参阅 [{% data variables.product.prodname_marketplace %} 终结点](/rest/reference/apps#github-marketplace)。 ## 测试 web 挂钩 -GitHub 提供用于测试已部署有效负载的工具。 有关详细信息,请参阅“[测试 Webhook](/webhooks/testing/)”。 +GitHub 提供用于测试已部署有效负载的工具。有关详细信息,请参阅“[测试 Webhook](/webhooks/testing/)”。 diff --git a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/webhook-events-for-the-github-marketplace-api.md b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/webhook-events-for-the-github-marketplace-api.md index d64baea3d69c..3c6832330d77 100644 --- a/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/webhook-events-for-the-github-marketplace-api.md +++ b/translations/zh-CN/content/developers/github-marketplace/using-the-github-marketplace-api-in-your-app/webhook-events-for-the-github-marketplace-api.md @@ -1,6 +1,6 @@ --- title: GitHub Marketplace API 的 web 挂钩事件 -intro: '{% data variables.product.prodname_marketplace %} app 从 Marketplace 购买事件 web 挂钩接收有关用户计划更改的信息。 当用户购买、取消或更改其付款计划时,就会触发 Marketplace 购买事件。' +intro: '{% data variables.product.prodname_marketplace %} app 从 Marketplace 购买事件 web 挂钩接收有关用户计划更改的信息。当用户购买、取消或更改其付款计划时,就会触发 Marketplace 购买事件。' redirect_from: - /apps/marketplace/setting-up-github-marketplace-webhooks/about-webhook-payloads-for-a-github-marketplace-listing - /apps/marketplace/integrating-with-the-github-marketplace-api/github-marketplace-webhook-events @@ -21,9 +21,9 @@ ms.locfileid: '147710401' --- ## {% data variables.product.prodname_marketplace %} 购买 web 挂钩有效负载 -Webhook `POST` 请求具有特殊的标头。 有关详细信息,请参阅“[Webhook 传递头](/webhooks/event-payloads/#delivery-headers)”。 GitHub 不会重新发送失败的递送尝试。 确保您的应用程序可以接收 GitHub 发送的所有 web 挂钩有效负载。 +Webhook `POST` 请求具有特殊的标头。有关详细信息,请参阅“[Webhook 传递头](/webhooks/event-payloads/#delivery-headers)”。GitHub 不会重新发送失败的递送尝试。确保您的应用程序可以接收 GitHub 发送的所有 web 挂钩有效负载。 -取消和降级在下一个结算周期的第一天生效。 如果新计划在下一个结算周期开始时生效,则将发送降级和取消事件。 新的购买和升级事件会立即生效。 使用 Webhook 有效负载中的 `effective_date` 来确定何时开始更改。 +取消和降级在下一个结算周期的第一天生效。如果新计划在下一个结算周期开始时生效,则将发送降级和取消事件。新的购买和升级事件会立即生效。使用 Webhook 有效负载中的 `effective_date` 来确定何时开始更改。 {% data reusables.marketplace.marketplace-malicious-behavior %} @@ -32,7 +32,7 @@ Webhook `POST` 请求具有特殊的标头。 有关详细信息,请参阅“[ 密钥 | 类型 | 说明 ----|------|------------- -`action` | `string` | 为生成 web 挂钩而执行的操作。 可以是 `purchased`、`cancelled`、`pending_change`、`pending_change_cancelled` 或 `changed`。 更多信息请参阅下面的 web 挂钩有效负载示例。 注意:`pending_change` 和 `pending_change_cancelled` 有效负载包含的键与 [`changed` 有效负载示例](#example-webhook-payload-for-a-changed-event)中所示的键相同。 +`action` | `string` | 为生成 web 挂钩而执行的操作。可以是 `purchased`、`cancelled`、`pending_change`、`pending_change_cancelled` 或 `changed`。更多信息请参阅下面的 web 挂钩有效负载示例。注意:`pending_change` 和 `pending_change_cancelled` 有效负载包含的键与 [`changed` 有效负载示例](#example-webhook-payload-for-a-changed-event)中所示的键相同。 `effective_date` | `string` | `action` 生效日期。 `sender` | `object` | 采取 `action` 触发 Webhook 的人。 `marketplace_purchase` | `object` | {% data variables.product.prodname_marketplace %} 购买信息。 @@ -41,12 +41,12 @@ Webhook `POST` 请求具有特殊的标头。 有关详细信息,请参阅“[ 密钥 | 类型 | 说明 ----|------|------------- -`account` | `object` | 与订阅关联的 `organization` 或 `user` 帐户。 组织帐户将包括 `organization_billing_email`,这是组织的管理电子邮件地址。 若要查找个人帐户的电子邮件地址,可使用[获取已通过身份验证的用户](/rest/reference/users#get-the-authenticated-user)终结点。 -`billing_cycle` | `string` | 可以是 `yearly` 或 `monthly`。 如果 `account` 所有者拥有免费的 GitHub 计划并且已购买免费的 {% data variables.product.prodname_marketplace %} 计划,`billing_cycle` 将为 `nil`。 +`account` | `object` | 与订阅关联的 `organization` 或 `user` 帐户。组织帐户将包括 `organization_billing_email`,这是组织的管理电子邮件地址。若要查找个人帐户的电子邮件地址,可使用[获取已通过身份验证的用户](/rest/reference/users#get-the-authenticated-user)终结点。 +`billing_cycle` | `string` | 可以是 `yearly` 或 `monthly`。如果 `account` 所有者拥有免费的 GitHub 计划并且已购买免费的 {% data variables.product.prodname_marketplace %} 计划,`billing_cycle` 将为 `nil`。 `unit_count` | `integer` | 购买的单位数。 `on_free_trial` | `boolean` | 当 `account` 免费试用时,该值为 `true`。 `free_trial_ends_on` | `string` | 免费试用到期日期。 -`next_billing_date` | `string` | 下一个结算周期开始日期。 如果 `account` 所有者拥有免费的 GitHub.com 计划并且已购买免费的 {% data variables.product.prodname_marketplace %} 计划,`next_billing_date` 将为 `nil`。 +`next_billing_date` | `string` | 下一个结算周期开始日期。如果 `account` 所有者拥有免费的 GitHub.com 计划并且已购买免费的 {% data variables.product.prodname_marketplace %} 计划,`next_billing_date` 将为 `nil`。 `plan` | `object` | `user` 或 `organization` 购买的计划。 `plan` 对象具有以下键: @@ -56,11 +56,11 @@ Webhook `POST` 请求具有特殊的标头。 有关详细信息,请参阅“[ `id` | `integer` | 此计划的唯一标识符。 `name` | `string` | 计划的名称。 `description` | `string` | 此计划的说明。 -`monthly_price_in_cents` | `integer` | 此计划的每月价格(以美分为单位)。 例如,每月费用 10 美元的商品将显示价格 1000 美分。 -`yearly_price_in_cents` | `integer` | 此计划的每年价格(以美分为单位)。 例如,每月费用 100 美元的商品将显示价格 120000 美分。 -`price_model` | `string` | 此商品的定价模型。 可以是 `flat-rate`、`per-unit` 或 `free` 之一。 +`monthly_price_in_cents` | `integer` | 此计划的每月价格(以美分为单位)。例如,每月费用 10 美元的商品将显示价格 1000 美分。 +`yearly_price_in_cents` | `integer` | 此计划的每年价格(以美分为单位)。例如,每月费用 100 美元的商品将显示价格 120000 美分。 +`price_model` | `string` | 此商品的定价模型。可以是 `flat-rate`、`per-unit` 或 `free` 之一。 `has_free_trial` | `boolean` | 当此商品提供免费试用时,该值为 `true`。 -`unit_name` | `string` | 单位的名称。 如果定价模型不是 `per-unit`,则它将为 `nil`。 +`unit_name` | `string` | 单位的名称。如果定价模型不是 `per-unit`,则它将为 `nil`。 `bullet` | `array of strings` | 定价计划中设置的项目符号的名称。
@@ -72,7 +72,7 @@ Webhook `POST` 请求具有特殊的标头。 有关详细信息,请参阅“[ ### `changed` 事件的 Webhook 有效负载示例 -计划中的更改包括升级和降级。 此示例表示 `changed`、`pending_change` 和 `pending_change_cancelled` 事件有效负载。 该操作标识这三个事件中发生了哪一个。 +计划中的更改包括升级和降级。此示例表示 `changed`、`pending_change` 和 `pending_change_cancelled` 事件有效负载。该操作标识这三个事件中发生了哪一个。 {{ webhookPayloadsForCurrentVersion.marketplace_purchase.changed }} diff --git a/translations/zh-CN/content/developers/overview/github-developer-program.md b/translations/zh-CN/content/developers/overview/github-developer-program.md index cad72248d83d..78c9de66776f 100644 --- a/translations/zh-CN/content/developers/overview/github-developer-program.md +++ b/translations/zh-CN/content/developers/overview/github-developer-program.md @@ -15,7 +15,7 @@ ms.contentlocale: zh-CN ms.lasthandoff: 07/27/2022 ms.locfileid: '147425548' --- -要构建与 GitHub 集成的应用程序? 请注册我们的开发者计划! 无尽可能,享受点赞。 [立即注册](https://github.com/developer/register) +要构建与 GitHub 集成的应用程序?请注册我们的开发者计划!无尽可能,享受点赞。 [立即注册](https://github.com/developer/register) ## 大显身手 @@ -27,7 +27,7 @@ ms.locfileid: '147425548' ## 有适用于 GitHub 的集成? -太棒了! 我们希望您加入计划。 以下是您可以使用的推广方式:

+太棒了!我们希望您加入计划。以下是您可以使用的推广方式:

* [让我们知道你的集成](https://support.github.com/contact?tags=rr-general-technical&form[subject]=New+GitHub+Integration) * 使用 [Octocat 或 GitHub 徽标](https://github.com/logos)标识产品是否适用于 GitHub * 在您的网站上发布有关您的集成的视频或博客 diff --git a/translations/zh-CN/content/developers/overview/managing-deploy-keys.md b/translations/zh-CN/content/developers/overview/managing-deploy-keys.md index 8dd4778fa584..db1130628d30 100644 --- a/translations/zh-CN/content/developers/overview/managing-deploy-keys.md +++ b/translations/zh-CN/content/developers/overview/managing-deploy-keys.md @@ -25,7 +25,7 @@ ms.locfileid: '146058466' ## SSH 代理转发 -在许多情况下,尤其是在项目开始时,SSH 代理转发是最快和最简单的方法。 代理转发与本地开发计算机使用相同的 SSH 密钥。 +在许多情况下,尤其是在项目开始时,SSH 代理转发是最快和最简单的方法。代理转发与本地开发计算机使用相同的 SSH 密钥。 #### 优点 @@ -40,8 +40,8 @@ ms.locfileid: '146058466' #### 设置 -1. 在本地开启代理转发。 有关详细信息,请参阅[有关 SSH 代理转发的指南][ssh-agent-forwarding]。 -2. 将部署脚本设置为使用代理转发。 例如,在 bash 脚本上,启用代理转发将如下所示:`ssh -A serverA 'bash -s' < deploy.sh` +1. 在本地开启代理转发。有关详细信息,请参阅 [有关 SSH 代理转发的指南][ssh-agent-forwarding]。 +2. 将部署脚本设置为使用代理转发。例如,在 bash 脚本上,启用代理转发将如下所示:`ssh -A serverA 'bash -s' < deploy.sh` ## 使用 OAuth 令牌进行 HTTPS 克隆 @@ -80,25 +80,25 @@ ms.locfileid: '146058466' #### 缺点 -* 部署密钥只授予对单个仓库的访问权限。 较复杂的项目可能要将多个仓库拉取到同一服务器。 +* 部署密钥只授予对单个仓库的访问权限。较复杂的项目可能要将多个仓库拉取到同一服务器。 * 部署密钥通常不受密码保护,因此在服务器遭到破坏时可轻松访问密钥。 #### 设置 -1. 在服务器上[运行 `ssh-keygen` 过程][generating-ssh-keys],并记住保存生成的公共和专用 rsa 密钥对的位置。 +1. 在服务器上 [运行 `ssh-keygen` 过程][generating-ssh-keys],并记住保存生成的公共和专用 rsa 密钥对的位置。 2. 在任意 {% data variables.product.product_name %} 页面的右上角,单击个人资料照片,然后单击“你的个人资料”。 ![个人资料导航](/assets/images/profile-page.png) 3. 在个人资料页上,单击“存储库”,然后单击存储库的名称。 ![存储库链接](/assets/images/repos.png) 4. 在存储库中,单击“设置”。 ![存储库设置](/assets/images/repo-settings.png) 5. 在边栏中,单击“部署密钥”,然后单击“添加部署密钥” 。 ![添加部署密钥链接](/assets/images/add-deploy-key.png) 6. 提供标题,粘贴到公钥中。 ![部署密钥页面](/assets/images/deploy-key.png) -7. 如果希望此密钥具有对存储库的写入权限,请选择“允许写入权限”。 具有写入权限的部署密钥允许将部署推送到仓库。 +7. 如果希望此密钥具有对存储库的写入权限,请选择“允许写入权限”。具有写入权限的部署密钥允许将部署推送到仓库。 8. 单击“添加密钥”。 #### 在一台服务器上使用多个仓库 -如果在一台服务器上使用多个仓库,则需要为每个仓库生成专用密钥对。 不能对多个仓库重复使用一个部署密钥。 +如果在一台服务器上使用多个仓库,则需要为每个仓库生成专用密钥对。不能对多个仓库重复使用一个部署密钥。 -在服务器的 SSH 配置文件中(通常为 `~/.ssh/config`),为每个存储库添加别名条目。 例如: +在服务器的 SSH 配置文件中(通常为 `~/.ssh/config`),为每个存储库添加别名条目。例如: ```bash Host {% ifversion fpt or ghec %}github.com{% else %}my-GHE-hostname.com{% endif %}-repo-0 @@ -114,7 +114,7 @@ Host {% ifversion fpt or ghec %}github.com{% else %}my-GHE-hostname.com{% endif * `Hostname {% ifversion fpt or ghec %}github.com{% else %}my-GHE-hostname.com{% endif %}` - 将主机名配置为与别名一起使用。 * `IdentityFile=/home/user/.ssh/repo-0_deploy_key` - 将私钥分配给别名。 -然后可以使用主机名的别名通过 SSH 与仓库进行交互,SSH 将使用分配给该别名的唯一部署密钥。 例如: +然后可以使用主机名的别名通过 SSH 与仓库进行交互,SSH 将使用分配给该别名的唯一部署密钥。例如: ```bash $ git clone git@{% ifversion fpt or ghec %}github.com{% else %}my-GHE-hostname.com{% endif %}-repo-1:OWNER/repo-1.git @@ -122,9 +122,9 @@ $ git clone git@{% ifversion fpt or ghec %}github.com{% else %}my-GHE-hostname.c ## 服务器到服务器令牌 -如果服务器需要访问一个或多个组织的存储库,可以使用 GitHub 应用来定义需要的访问权限,然后从该 GitHub 应用生成 tightly-scoped、server-to-server 令牌 。 服务器到服务器令牌可以扩展到单个或多个仓库,并且可以拥有细致的权限。 例如,您可以生成对仓库内容具有只读权限的令牌。 +如果服务器需要访问一个或多个组织的存储库,可以使用 GitHub 应用来定义需要的访问权限,然后从该 GitHub 应用生成 tightly-scoped、server-to-server 令牌。服务器到服务器令牌可以扩展到单个或多个仓库,并且可以拥有细致的权限。例如,您可以生成对仓库内容具有只读权限的令牌。 -由于 GitHub 应用程序是 {% data variables.product.product_name %} 上的一类角色,因此服务器到服务器令牌不限于任何 GitHub 用户,这使它们堪比“服务令牌”。 此外,服务器到服务器令牌有专门的速率限制,与它们所依据的组织规模相当。 有关详细信息,请参阅 [{% data variables.product.prodname_github_apps %} 的速率限制](/developers/apps/rate-limits-for-github-apps)。 +由于 GitHub 应用程序是 {% data variables.product.product_name %} 上的一类角色,因此服务器到服务器令牌不限于任何 GitHub 用户,这使它们堪比“服务令牌”。此外,服务器到服务器令牌有专门的速率限制,与它们所依据的组织规模相当。有关详细信息,请参阅 [{% data variables.product.prodname_github_apps %} 的速率限制](/developers/apps/rate-limits-for-github-apps)。 #### 优点 @@ -140,29 +140,29 @@ $ git clone git@{% ifversion fpt or ghec %}github.com{% else %}my-GHE-hostname.c #### 设置 -1. 确定您的 GitHub 应用程序是公开的还是私有的。 如果您的 GitHub 应用程序将仅在您组织内的仓库上操作,您可能希望它是私有的。 +1. 确定您的 GitHub 应用程序是公开的还是私有的。如果您的 GitHub 应用程序将仅在您组织内的仓库上操作,您可能希望它是私有的。 1. 确定 GitHub 应用程序所需的权限,例如对仓库内容的只读访问权限。 -1. 通过组织的设置页面创建您的 GitHub 应用程序。 有关详细信息,请参阅[创建 GitHub 应用程序](/developers/apps/creating-a-github-app)。 +1. 通过组织的设置页面创建您的 GitHub 应用程序。有关详细信息,请参阅[创建 GitHub 应用程序](/developers/apps/creating-a-github-app)。 1. 记下 GitHub 应用 `id`。 -1. 生成并下载 GitHub 应用程序的私钥,并妥善保管。 有关详细信息,请参阅[生成私钥](/developers/apps/authenticating-with-github-apps#generating-a-private-key)。 +1. 生成并下载 GitHub 应用程序的私钥,并妥善保管。有关详细信息,请参阅[生成私钥](/developers/apps/authenticating-with-github-apps#generating-a-private-key)。 1. 将 GitHub 应用程序安装到需要执行它的仓库中,您可以在组织中的所有仓库上选择性地安装 GitHub 应用程序。 -1. 标识 `installation_id`,它表示 GitHub 应用与其可以访问的组织存储库之间的连接。 每个 GitHub 应用和组织对都最多只有一个 `installation_id`。 可以通过[获取经过身份验证的应用的组织安装](/rest/reference/apps#get-an-organization-installation-for-the-authenticated-app)来标识此 `installation_id`。 这需要使用 JWT 验证为 GitHub 应用,有关详细信息,请参阅[验证为 GitHub 应用](/developers/apps/authenticating-with-github-apps#authenticating-as-a-github-app)。 -1. 使用相应的 REST API 终结点生成服务器到服务器令牌,[为应用创建安装访问令牌](/rest/reference/apps#create-an-installation-access-token-for-an-app)。 这需要使用 JWT 验证为 GitHub 应用,有关详细信息,请参阅[验证为 GitHub 应用](/developers/apps/authenticating-with-github-apps#authenticating-as-a-github-app)以及[验证为安装](/developers/apps/authenticating-with-github-apps#authenticating-as-an-installation)。 +1. 标识 `installation_id`,它表示 GitHub 应用与其可以访问的组织存储库之间的连接。每个 GitHub 应用和组织对都最多只有一个 `installation_id`。可以通过[获取经过身份验证的应用的组织安装](/rest/reference/apps#get-an-organization-installation-for-the-authenticated-app)来标识此 `installation_id`。这需要使用 JWT 验证为 GitHub 应用,有关详细信息,请参阅[验证为 GitHub 应用](/developers/apps/authenticating-with-github-apps#authenticating-as-a-github-app)。 +1. 使用相应的 REST API 终结点生成服务器到服务器令牌,[为应用创建安装访问令牌](/rest/reference/apps#create-an-installation-access-token-for-an-app)。这需要使用 JWT 验证为 GitHub 应用,有关详细信息,请参阅[验证为 GitHub 应用](/developers/apps/authenticating-with-github-apps#authenticating-as-a-github-app)以及[验证为安装](/developers/apps/authenticating-with-github-apps#authenticating-as-an-installation)。 1. 使用此服务器到服务器令牌,通过 REST 或 GraphQL API 或者通过 Git 客户端与您的仓库进行交互。 ## 机器用户 -如果您的服务器需要访问多个仓库,您可以创建一个新的 {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.product.product_location %}{% endif %} 帐户并附加一个专用于自动化的 SSH 密钥。 由于人们不会使用 {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.product.product_location %}{% endif %} 上的这个帐户,因此它被称为“机器用户”。 可以将机器用户添加为个人存储库上的[协作者][collaborator](授予读取和写入访问权限),或添加为组织存储库上的[外部协作者][outside-collaborator](授予读取、写入或管理员访问权限),或添加到有权访问其需要自动化的存储库的[团队][team](授予团队权限)。 +如果您的服务器需要访问多个仓库,您可以创建一个新的 {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.product.product_location %}{% endif %} 帐户并附加一个专用于自动化的 SSH 密钥。由于人们不会使用 {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.product.product_location %}{% endif %} 上的这个帐户,因此它被称为“机器用户”。可以将机器用户添加为个人存储库上的 [协作者][collaborator](授予读取和写入访问权限),或添加为组织存储库上的 [外部协作者][outside-collaborator](授予读取、写入或管理员访问权限),或添加到有权访问其需要自动化的存储库的 [团队][team](授予团队权限)。 {% ifversion fpt or ghec %} {% tip %} -提示:我们的[服务条款][tos]规定: +提示:我们的 [服务条款][tos] 规定: > 不允许通过“机器人”或其他自动方法注册帐户。 -这意味着您不能自动创建帐户。 但是,如果要创建一个机器用户来自动化任务(例如在项目或组织中部署脚本),那就太酷了。 +这意味着您不能自动创建帐户。但是,如果要创建一个机器用户来自动化任务(例如在项目或组织中部署脚本),那就太酷了。 {% endtip %} @@ -176,13 +176,13 @@ $ git clone git@{% ifversion fpt or ghec %}github.com{% else %}my-GHE-hostname.c #### 缺点 -* 只有组织才能将机器用户限制为只读访问。 个人仓库始终授予协作者读取/写入权限。 +* 只有组织才能将机器用户限制为只读访问。个人仓库始终授予协作者读取/写入权限。 * 机器用户密钥(如部署密钥)通常不受密码保护。 #### 设置 1. [在服务器上运行 `ssh-keygen` 过程][generating-ssh-keys],并将公钥附加到计算机用户帐户。 -2. 授予机器用户帐户访问要自动化的仓库的权限。 可以通过将帐户添加为 [协作者][collaborator]、[外部协作者][outside-collaborator],或添加到组织中的[团队][team]来执行此操作。 +2. 授予机器用户帐户访问要自动化的仓库的权限。可以通过将帐户添加为 [协作者][collaborator]、[外部协作者][outside-collaborator],或添加到组织中的 [团队][team] 来执行此操作。 [ssh-agent-forwarding]: /guides/using-ssh-agent-forwarding/ [generating-ssh-keys]: /articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#generating-a-new-ssh-key diff --git a/translations/zh-CN/content/developers/overview/replacing-github-services.md b/translations/zh-CN/content/developers/overview/replacing-github-services.md index e1c842849996..a8bc947341a7 100644 --- a/translations/zh-CN/content/developers/overview/replacing-github-services.md +++ b/translations/zh-CN/content/developers/overview/replacing-github-services.md @@ -18,27 +18,27 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/10/2022 ms.locfileid: '145097998' --- -我们弃用了 GitHub 服务,转而支持与 web 挂钩集成。 本指南可帮助您从 GitHub 服务过渡到 web 挂钩。 有关此公告的详细信息,请参阅[博客文章](https://developer.github.com/changes/2018-10-01-denying-new-github-services)。 +我们弃用了 GitHub 服务,转而支持与 web 挂钩集成。本指南可帮助您从 GitHub 服务过渡到 web 挂钩。有关此公告的详细信息,请参阅[博客文章](https://developer.github.com/changes/2018-10-01-denying-new-github-services)。 {% note %} -作为电子邮件服务的替代方法,您现在可以开始使用推送到仓库的电子邮件通知。 请参阅“[关于存储库推送的电子邮件通知](/github/receiving-notifications-about-activity-on-github/about-email-notifications-for-pushes-to-your-repository/)”,了解如何配置提交电子邮件通知。 +作为电子邮件服务的替代方法,您现在可以开始使用推送到仓库的电子邮件通知。请参阅“[关于存储库推送的电子邮件通知](/github/receiving-notifications-about-activity-on-github/about-email-notifications-for-pushes-to-your-repository/)”,了解如何配置提交电子邮件通知。 {% endnote %} ## 弃用时间表 -- 2018 年 10 月 1 日:GitHub 停止允许用户安装服务。 我们从 GitHub.com 用户界面中删除了 GitHub 服务。 -- 2019 年 1 月 29 日:作为电子邮件服务的替代方法,现在可以开始对到存储库的推送使用电子邮件通知。 请参阅“[关于存储库推送的电子邮件通知](/github/receiving-notifications-about-activity-on-github/about-email-notifications-for-pushes-to-your-repository/)”,了解如何配置提交电子邮件通知。 +- 2018 年 10 月 1 日:GitHub 停止允许用户安装服务。我们从 GitHub.com 用户界面中删除了 GitHub 服务。 +- 2019 年 1 月 29 日:作为电子邮件服务的替代方法,现在可以开始对到存储库的推送使用电子邮件通知。请参阅“[关于存储库推送的电子邮件通知](/github/receiving-notifications-about-activity-on-github/about-email-notifications-for-pushes-to-your-repository/)”,了解如何配置提交电子邮件通知。 - 2019 年 1 月 31 日:GitHub 将停止在 GitHub.com 上交付已安装服务的事件。 ## GitHub 服务背景信息 -GitHub 服务(有时称为服务挂钩)是传统的集成方法,其中 GitHub 通过 [`github-services` 存储库](https://github.com/github/github-services)托管集成者的部分服务。 在 GitHub 上执行的操作会触发这些服务,您可以使用这些服务在 GitHub 之外触发操作。 +GitHub 服务(有时称为服务挂钩)是传统的集成方法,其中 GitHub 通过 [`github-services` 存储库](https://github.com/github/github-services)托管集成者的部分服务。在 GitHub 上执行的操作会触发这些服务,您可以使用这些服务在 GitHub 之外触发操作。 {% ifversion ghes %} ## 查找使用 GitHub 服务的仓库 -我们提供命令行脚本,帮助您识别设备上哪些仓库使用 GitHub 服务。 有关详细信息,请参阅 [ghe-legacy-github-services-report](/enterprise/{{currentVersion}}/admin/articles/command-line-utilities/#ghe-legacy-github-services-report)。{% endif %} +我们提供命令行脚本,帮助您识别设备上哪些仓库使用 GitHub 服务。有关详细信息,请参阅 [ghe-legacy-github-services-report](/enterprise/{{currentVersion}}/admin/articles/command-line-utilities/#ghe-legacy-github-services-report)。{% endif %} ## GitHub 服务与 web 挂钩 @@ -49,7 +49,7 @@ GitHub 服务与 web 挂钩之间的主要区别: ## 用 web 挂钩替换服务 -要用 web 挂钩替换 GitHub 服务: +要用 web 挂钩替换 GitHub 服务: 1. 通过[此列表](/webhooks/#events)确定你需要订阅的相关 Webhook 事件。 @@ -57,16 +57,16 @@ GitHub 服务与 web 挂钩之间的主要区别: - GitHub 应用:更新应用的权限和订阅的事件,以将应用配置为接收相关的 Webhook 事件。 - OAuth 应用:请求 `repo_hook` 和/或 `org_hook` 作用域以代表用户管理相关事件。 - - GitHub 服务提供商:请求用户手动配置包含发送给你的相关事件的 Webhook,或者借此机会构建一个应用来管理此功能。 有关详细信息,请参阅“[关于应用](/apps/about-apps/)”。 + - GitHub 服务提供商:请求用户手动配置包含发送给你的相关事件的 Webhook,或者借此机会构建一个应用来管理此功能。有关详细信息,请参阅“[关于应用](/apps/about-apps/)”。 -3. 从 GitHub 外部移动额外配置。 某些 GitHub 服务需要在 GitHub 中的配置页面上进行额外的自定义配置。 如果您的服务这样做,则需要将此功能移动到应用程序中,或在适用的情况下依赖 GitHub 或 OAuth 应用程序。 +3. 从 GitHub 外部移动额外配置。某些 GitHub 服务需要在 GitHub 中的配置页面上进行额外的自定义配置。如果您的服务这样做,则需要将此功能移动到应用程序中,或在适用的情况下依赖 GitHub 或 OAuth 应用程序。 ## 支持 {% data variables.product.prodname_ghe_server %} -- {% data variables.product.prodname_ghe_server %} 2.17:{% data variables.product.prodname_ghe_server %} 2.17 及更高版本将停止允许管理员安装服务。 在 {% data variables.product.prodname_ghe_server %} 2.17 至 2.19 版本中,管理员仍然能够修改现有服务挂钩和接收服务挂钩。 在 {% data variables.product.prodname_ghe_server %} 2.17 及更高版本中,作为电子邮件服务的替代方法,您将能够使用推送到仓库的电子邮件通知。 要了解详细信息,请参阅[此博客文章](https://developer.github.com/changes/2019-01-29-life-after-github-services) 。 +- {% data variables.product.prodname_ghe_server %} 2.17:{% data variables.product.prodname_ghe_server %} 2.17 及更高版本将停止允许管理员安装服务。在 {% data variables.product.prodname_ghe_server %} 2.17 至 2.19 版本中,管理员仍然能够修改现有服务挂钩和接收服务挂钩。在 {% data variables.product.prodname_ghe_server %} 2.17 及更高版本中,作为电子邮件服务的替代方法,您将能够使用推送到仓库的电子邮件通知。要了解详细信息,请参阅[此博客文章](https://developer.github.com/changes/2019-01-29-life-after-github-services) 。 - {% data variables.product.prodname_ghe_server %} 2.20:{% data variables.product.prodname_ghe_server %} 2.20 及更高版本将停止交付所有已安装服务的事件。 -{% data variables.product.prodname_ghe_server %} 2.17 版将是不允许管理员安装 GitHub 服务的第一个版本。 我们将仅支持现有的 GitHub 服务,直到 {% data variables.product.prodname_ghe_server %} 2.20 版本。 我们还将接受 {% data variables.product.prodname_ghe_server %} 上运行的 GitHub 服务的任何重要补丁,直到 2019 年 10 月 1 日。 +{% data variables.product.prodname_ghe_server %} 2.17 版将是不允许管理员安装 GitHub 服务的第一个版本。我们将仅支持现有的 GitHub 服务,直到 {% data variables.product.prodname_ghe_server %} 2.20 版本。我们还将接受 {% data variables.product.prodname_ghe_server %} 上运行的 GitHub 服务的任何重要补丁,直到 2019 年 10 月 1 日。 ## 在我们的帮助下迁移 @@ -75,4 +75,4 @@ GitHub 服务与 web 挂钩之间的主要区别: 作为高度概述,迁移过程通常涉及: - 确定产品使用 GitHub 服务的方式和位置。 - 确定需要配置的相应 web 挂钩事件,以便移动到普通 web 挂钩。 - - 使用 [{% data variables.product.prodname_oauth_apps %}](/apps/building-oauth-apps/) 或 [{% data variables.product.prodname_github_apps %} 实现设计。推荐使用 {% data variables.product.prodname_github_apps %}](/apps/building-github-apps/)。 要详细了解为何推荐使用 {% data variables.product.prodname_github_apps %},请参阅“[切换到 {% data variables.product.prodname_github_apps %} 的原因](/apps/migrating-oauth-apps-to-github-apps/#reasons-for-switching-to-github-apps)”。 + - 使用 [{% data variables.product.prodname_oauth_apps %}](/apps/building-oauth-apps/) 或 [{% data variables.product.prodname_github_apps %} 实现设计。推荐使用 {% data variables.product.prodname_github_apps %}](/apps/building-github-apps/)。要详细了解为何推荐使用 {% data variables.product.prodname_github_apps %},请参阅“[切换到 {% data variables.product.prodname_github_apps %} 的原因](/apps/migrating-oauth-apps-to-github-apps/#reasons-for-switching-to-github-apps)”。 diff --git a/translations/zh-CN/content/developers/overview/secret-scanning-partner-program.md b/translations/zh-CN/content/developers/overview/secret-scanning-partner-program.md index 7a62aa0a318b..cb6c8225f073 100644 --- a/translations/zh-CN/content/developers/overview/secret-scanning-partner-program.md +++ b/translations/zh-CN/content/developers/overview/secret-scanning-partner-program.md @@ -19,11 +19,11 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/10/2022 ms.locfileid: '145097997' --- -{% data variables.product.prodname_dotcom %} 扫描仓库查找已知的密码格式,以防止欺诈性使用意外提交的凭据。 {% data variables.product.prodname_secret_scanning_caps %} 默认情况下发生在公共仓库上,但仓库管理员或组织所有者可以在私有仓库上启用它。 作为服务提供者,您可以与 {% data variables.product.prodname_dotcom %} 合作,让您的密码格式包含在我们的 {% data variables.product.prodname_secret_scanning %} 中。 +{% data variables.product.prodname_dotcom %} 扫描仓库查找已知的密码格式,以防止欺诈性使用意外提交的凭据。 {% data variables.product.prodname_secret_scanning_caps %} 默认情况下发生在公共仓库上,但仓库管理员或组织所有者可以在私有仓库上启用它。作为服务提供者,您可以与 {% data variables.product.prodname_dotcom %} 合作,让您的密码格式包含在我们的 {% data variables.product.prodname_secret_scanning %} 中。 在公共仓库中找到密码格式的匹配项时,将发送有效负载到您选择的 HTTP 端点。 -在为 {% data variables.product.prodname_secret_scanning %} 配置的私有仓库中找到密码格式的匹配项时,仓库管理员和提交者将收到警报,并且可以查看和管理 {% data variables.product.prodname_dotcom %} 上的 {% data variables.product.prodname_secret_scanning %} 结果。 有关详细信息,请参阅“[管理来自 {% data variables.product.prodname_secret_scanning %} 的警报](/github/administering-a-repository/managing-alerts-from-secret-scanning)。” +在为 {% data variables.product.prodname_secret_scanning %} 配置的私有仓库中找到密码格式的匹配项时,仓库管理员和提交者将收到警报,并且可以查看和管理 {% data variables.product.prodname_dotcom %} 上的 {% data variables.product.prodname_secret_scanning %} 结果。有关详细信息,请参阅“[管理来自 {% data variables.product.prodname_secret_scanning %} 的警报](/github/administering-a-repository/managing-alerts-from-secret-scanning)。” 本文介绍作为服务提供者如何与 {% data variables.product.prodname_dotcom %} 合作并加入 {% data variables.product.prodname_secret_scanning %} 合作伙伴计划。 @@ -54,15 +54,15 @@ ms.locfileid: '145097997' 要扫描您的密码,{% data variables.product.prodname_dotcom %} 需要您要包含在 {% data variables.product.prodname_secret_scanning %} 计划中的每个密码的以下信息: -* 密码类型的唯一、人类可读的名称。 稍后我们将使用它在消息有效负载中生成 `Type` 值。 -* 查找密码类型的正则表达式。 尽可能精确,因为这样可以减少误报的数量。 -* 从 {% data variables.product.prodname_dotcom %} 接收消息的端点的 URL。 对于每个密码类型,这不必是唯一的。 +* 密码类型的唯一、人类可读的名称。稍后我们将使用它在消息有效负载中生成 `Type` 值。 +* 查找密码类型的正则表达式。尽可能精确,因为这样可以减少误报的数量。 +* 从 {% data variables.product.prodname_dotcom %} 接收消息的端点的 URL。对于每个密码类型,这不必是唯一的。 将此信息发送到 secret-scanning@github.com。 ### 创建密码警报服务 -在您提供给我们的 URL 上创建一个可访问互联网的公共 HTTP 端点。 在公共存储库中找到正则表达式的匹配项时,{% data variables.product.prodname_dotcom %} 将发送 HTTP `POST` 消息到你的终结点。 +在您提供给我们的 URL 上创建一个可访问互联网的公共 HTTP 端点。在公共存储库中找到正则表达式的匹配项时,{% data variables.product.prodname_dotcom %} 将发送 HTTP `POST` 消息到你的终结点。 #### 发送到端点的 POST 示例 @@ -78,7 +78,7 @@ Content-Length: 0123 [{"token":"NMIfyYncKcRALEXAMPLE","type":"mycompany_api_token","url":"https://github.com/octocat/Hello-World/blob/12345600b9cbe38a219f39a9941c9319b600c002/foo/bar.txt"}] ``` -消息正文是一个 JSON 数组,其中包含一个或多个具有以下内容的对象。 找到多个匹配项时,{% data variables.product.prodname_dotcom %} 可能发送一条包含多个密码匹配项的消息。 您的端点应该能够在不超时的情况下处理包含大量匹配项的请求。 +消息正文是一个 JSON 数组,其中包含一个或多个具有以下内容的对象。找到多个匹配项时,{% data variables.product.prodname_dotcom %} 可能发送一条包含多个密码匹配项的消息。您的端点应该能够在不超时的情况下处理包含大量匹配项的请求。 * 令牌:机密匹配的值。 * 类型:提供用于标识正则表达式的唯一名称。 @@ -92,16 +92,16 @@ Content-Length: 0123 {% note %} -注意:向上述公钥终结点发送请求时,可能会达到速率限制。 为了避免达到速率限制,您可以使用下面示例建议的个人访问令牌(无需范围),或使用条件请求。 有关详细信息,请参阅“[REST API 入门](/rest/guides/getting-started-with-the-rest-api#conditional-requests)”。 +注意:向上述公钥终结点发送请求时,可能会达到速率限制。为了避免达到速率限制,您可以使用下面示例建议的个人访问令牌(无需范围),或使用条件请求。有关详细信息,请参阅“[REST API 入门](/rest/guides/getting-started-with-the-rest-api#conditional-requests)”。 {% endnote %} 假设您收到以下消息,下面的代码段演示如何执行签名验证。 -代码片段假定已使用生成的 PAT (https://github.com/settings/tokens) 设置名为 `GITHUB_PRODUCTION_TOKEN` 的环境变量以避免达到速率限制。 PAT 不需要任何范围/权限。 +代码片段假定已使用生成的 PAT (https://github.com/settings/tokens) 设置名为 `GITHUB_PRODUCTION_TOKEN` 的环境变量以避免达到速率限制。PAT 不需要任何范围/权限。 {% note %} -注意:签名是使用原始消息正文生成的。 因此,您也必须使用原始消息正文进行签名验证,而不是解析和串联 JSON,以避免重新排列消息或更改间距,这一点很重要。 +注意:签名是使用原始消息正文生成的。因此,您也必须使用原始消息正文进行签名验证,而不是解析和串联 JSON,以避免重新排列消息或更改间距,这一点很重要。 {% endnote %} @@ -332,13 +332,13 @@ const verify_signature = async (payload, signature, keyID) => { ### 在密码警报服务中实施密码撤销和用户通知 -对于公共仓库中的 {% data variables.product.prodname_secret_scanning %},您可以增强密码警报服务,以撤销泄露的密码并通知受影响的用户。 如何在密码警报服务中实现此功能取决于您,但我们建议您考虑 {% data variables.product.prodname_dotcom %}向您发送的公开和泄露示警消息所涉及的任何密码。 +对于公共仓库中的 {% data variables.product.prodname_secret_scanning %},您可以增强密码警报服务,以撤销泄露的密码并通知受影响的用户。如何在密码警报服务中实现此功能取决于您,但我们建议您考虑 {% data variables.product.prodname_dotcom %}向您发送的公开和泄露示警消息所涉及的任何密码。 ### 提供误报的反馈 -我们在合作伙伴响应中收集有关检测到的各个密码有效性的反馈。 如果你想参加,请发送电子邮件至 secret-scanning@github.com。 +我们在合作伙伴响应中收集有关检测到的各个密码有效性的反馈。如果你想参加,请发送电子邮件至 secret-scanning@github.com。 -向您报告密码时,我们会发送一个 JSON 数组,其中有包含令牌、类型标识符和提交 URL 的每个元素。 当您向我们发送反馈时,您将向我们发送有关检测到的令牌是真凭据还是假凭据的信息。 我们接受以下格式的反馈。 +向您报告密码时,我们会发送一个 JSON 数组,其中有包含令牌、类型标识符和提交 URL 的每个元素。当您向我们发送反馈时,您将向我们发送有关检测到的令牌是真凭据还是假凭据的信息。我们接受以下格式的反馈。 您可以向我们发送原始令牌: @@ -365,10 +365,10 @@ const verify_signature = async (payload, signature, keyID) => { 重要事项: - 您应该只向我们发送令牌的原始形式 ("token_raw") 或哈希形式,而不要同时发送这两种形式。 - 对于原始令牌的哈希形式,您只能使用 SHA-256 对令牌进行哈希处理,而不能使用任何其他哈希算法。 -- 用标签指示令牌为实报 ("true_positive") 还是误报 ("false_positive")。 只允许使用这两个小写的文字字符串。 +- 用标签指示令牌为实报 ("true_positive") 还是误报 ("false_positive")。只允许使用这两个小写的文字字符串。 {% note %} -注意:对于提供误报数据的合作伙伴,我们的请求超时设置得更高(即 30 秒)。 如果需要超过 30 秒的超时时间,请发送电子邮件至 secret-scanning@github.com。 +注意:对于提供误报数据的合作伙伴,我们的请求超时设置得更高(即 30 秒)。如果需要超过 30 秒的超时时间,请发送电子邮件至 secret-scanning@github.com。 {% endnote %} diff --git a/translations/zh-CN/content/developers/overview/using-ssh-agent-forwarding.md b/translations/zh-CN/content/developers/overview/using-ssh-agent-forwarding.md index 841d4d12bba0..f27ab05e908c 100644 --- a/translations/zh-CN/content/developers/overview/using-ssh-agent-forwarding.md +++ b/translations/zh-CN/content/developers/overview/using-ssh-agent-forwarding.md @@ -20,15 +20,15 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/05/2022 ms.locfileid: '145996255' --- -SSH 代理转发可用于简化向服务器的部署。 它允许您使用本地 SSH 密钥,而不是将密钥(不带密码!)放在服务器上。 +SSH 代理转发可用于简化向服务器的部署。它允许您使用本地 SSH 密钥,而不是将密钥(不带密码!)放在服务器上。 -如果已设置 SSH 密钥来与 {% data variables.product.product_name %} 交互,你可能已经熟悉 `ssh-agent`。 这是一个在后台运行的程序,它将密钥加载到内存中,因此您不需要每次使用密钥时都输入密码。 最妙的是,你可以选择让服务器访问你的本地 `ssh-agent`,就像它们已经在服务器上运行一样。 这有点像要求朋友输入他们的密码,以便您可以使用他们的计算机。 +如果已设置 SSH 密钥来与 {% data variables.product.product_name %} 交互,你可能已经熟悉 `ssh-agent`。这是一个在后台运行的程序,它将密钥加载到内存中,因此您不需要每次使用密钥时都输入密码。最妙的是,你可以选择让服务器访问你的本地 `ssh-agent`,就像它们已经在服务器上运行一样。这有点像要求朋友输入他们的密码,以便您可以使用他们的计算机。 有关 SSH 代理转发的更详细说明,请参阅 [Steve Friedl 的技术提示指南][tech-tips]。 ## 设置 SSH 代理转发 -确保您自己的 SSH 密钥已设置并正常运行。 如果你还没有 SSH 密钥,请使用[我们的 SSH 密钥生成指南][generating-keys]。 +确保您自己的 SSH 密钥已设置并正常运行。如果你还没有 SSH 密钥,请使用 [我们的 SSH 密钥生成指南][generating-keys]。 可以通过在终端输入 `ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %}` 来测试本地密钥是否正常工作: @@ -39,9 +39,9 @@ $ ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %} > shell access. ``` -开局不错。 让我们设置 SSH 以允许代理转发到您的服务器。 +开局不错。让我们设置 SSH 以允许代理转发到您的服务器。 -1. 使用你喜欢的文本编辑器打开位于 `~/.ssh/config` 的文件。 如果此文件不存在,则可以通过在终端中输入 `touch ~/.ssh/config` 来创建它。 +1. 使用你喜欢的文本编辑器打开位于 `~/.ssh/config` 的文件。如果此文件不存在,则可以通过在终端中输入 `touch ~/.ssh/config` 来创建它。 2. 在文件中输入以下文本,将 `example.com` 替换为服务器的域名或 IP: @@ -50,13 +50,13 @@ $ ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %} {% warning %} -警告:你可能想使用 `Host *` 这样的通配符将此设置应用于所有 SSH 连接。 但这并不是一个好主意,因为你将与通过 SSH 连接到的每台服务器共享你的本地 SSH 密钥。 它们无法直接访问密钥,但是在建立连接后,它们可以像你一样使用这些密钥。 你应该只添加你信任的服务器以及打算用于代理转发的服务器。 +警告:你可能想使用 `Host *` 这样的通配符将此设置应用于所有 SSH 连接。但这并不是一个好主意,因为你将与通过 SSH 连接到的每台服务器共享你的本地 SSH 密钥。它们无法直接访问密钥,但是在建立连接后,它们可以像你一样使用这些密钥。你应该只添加你信任的服务器以及打算用于代理转发的服务器。 {% endwarning %} ## 测试 SSH 代理转发 -要测试代理转发是否适用于你的服务器,可以通过 SSH 连接到服务器,然后再次运行 `ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %}`。 如果一切正常,您将收到与本地使用相同的提示。 +要测试代理转发是否适用于你的服务器,可以通过 SSH 连接到服务器,然后再次运行 `ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %}`。如果一切正常,您将收到与本地使用相同的提示。 如果不确定是否在使用本地密钥,还可以检查服务器上的 `SSH_AUTH_SOCK` 变量: @@ -83,7 +83,7 @@ $ ssh -T git@{% ifversion ghes or ghae %}hostname{% else %}github.com{% endif %} ### 您必须使用 SSH URL 检出代码 -SSH 转发仅适用于 SSH URL,而不是 HTTP(s) URL。 检查服务器上的 `.git/config` 文件,并确保 URL 是 SSH 样式的 URL,如下所示: +SSH 转发仅适用于 SSH URL,而不是 HTTP(s) URL。检查服务器上的 `.git/config` 文件,并确保 URL 是 SSH 样式的 URL,如下所示: ```shell [remote "origin"] @@ -93,11 +93,11 @@ SSH 转发仅适用于 SSH URL,而不是 HTTP(s) URL。 检查服务器上的 ### 您的 SSH 密钥必须在本地有效 -在通过代理转发使密钥起作用之前,它们必须首先在本地有效。 [我们的 SSH 密钥生成指南][generating-keys]可帮助你在本地设置 SSH 密钥。 +在通过代理转发使密钥起作用之前,它们必须首先在本地有效。 [我们的 SSH 密钥生成指南][generating-keys] 可帮助你在本地设置 SSH 密钥。 ### 您的系统必须允许 SSH 代理转发 -有时,系统配置不允许 SSH 代理转发。 您可以通过在终端中输入以下命令来检查是否正在使用系统配置文件: +有时,系统配置不允许 SSH 代理转发。您可以通过在终端中输入以下命令来检查是否正在使用系统配置文件: ```shell $ ssh -v example.com @@ -111,7 +111,7 @@ $ exit # Returns to your local command prompt ``` -在上面的示例中,首先加载文件 `~/.ssh/config`,然后读取 `/etc/ssh_config`。 通过运行以下命令,我们可以检查该文件以查看它是否覆盖了我们的选项: +在上面的示例中,首先加载文件 `~/.ssh/config`,然后读取 `/etc/ssh_config`。通过运行以下命令,我们可以检查该文件以查看它是否覆盖了我们的选项: ```shell $ cat /etc/ssh_config @@ -121,15 +121,15 @@ $ cat /etc/ssh_config > ForwardAgent no ``` -在此示例中,我们的 `/etc/ssh_config` 文件特别表示 `ForwardAgent no`,这是一种阻止代理转发的方式。 从文件中删除此行应该会使代理转发再次起作用。 +在此示例中,我们的 `/etc/ssh_config` 文件特别表示 `ForwardAgent no`,这是一种阻止代理转发的方式。从文件中删除此行应该会使代理转发再次起作用。 ### 您的服务器必须允许入站连接上的 SSH 代理转发 -代理转发也可能在您的服务器上被阻止。 可以通过 SSH 连接到服务器并运行 `sshd_config`,以检查是否允许代理转发。 此命令的输出应指示已设置 `AllowAgentForwarding`。 +代理转发也可能在您的服务器上被阻止。可以通过 SSH 连接到服务器并运行 `sshd_config`,以检查是否允许代理转发。此命令的输出应指示已设置 `AllowAgentForwarding`。 ### 本地 `ssh-agent` 必须正在运行 -在大多数计算机上,操作系统会自动为你启动 `ssh-agent`。 但是在 Windows 上,您需要手动执行此操作。 我们提供了[有关如何在打开 Git Bash 时启动 `ssh-agent` 的指南][autolaunch-ssh-agent]。 +在大多数计算机上,操作系统会自动为你启动 `ssh-agent`。但是在 Windows 上,您需要手动执行此操作。我们提供了 [有关如何在打开 Git Bash 时启动 `ssh-agent` 的指南][autolaunch-ssh-agent]。 要验证 `ssh-agent` 是否正在计算机上运行,请在终端中键入以下命令: @@ -155,7 +155,7 @@ $ ssh-add yourkey {% tip %} -在 MacOS 上,一旦在重新引导过程中重启 `ssh-agent`,它将“忘记”该密钥。 但是,您可以使用此命令将 SSH 密钥导入密钥链: +在 MacOS 上,一旦在重新引导过程中重启 `ssh-agent`,它将“忘记”该密钥。但是,您可以使用此命令将 SSH 密钥导入密钥链: ```shell $ ssh-add -K yourkey diff --git a/translations/zh-CN/content/developers/webhooks-and-events/events/github-event-types.md b/translations/zh-CN/content/developers/webhooks-and-events/events/github-event-types.md index ae3da71d69e9..9832e5323bb7 100644 --- a/translations/zh-CN/content/developers/webhooks-and-events/events/github-event-types.md +++ b/translations/zh-CN/content/developers/webhooks-and-events/events/github-event-types.md @@ -18,7 +18,7 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/05/2022 ms.locfileid: '146064241' --- -事件 API 可以返回 GitHub 上的活动触发的不同类型事件。 每个事件响应都包含共享属性,但具有由其事件类型确定的唯一 `payload` 对象。 [事件对象公共属性](#event-object-common-properties)描述所有事件共享的属性,而每个事件类型描述特定事件唯一的 `payload` 属性。 +事件 API 可以返回 GitHub 上的活动触发的不同类型事件。每个事件响应都包含共享属性,但具有由其事件类型确定的唯一 `payload` 对象。 [事件对象公共属性](#event-object-common-properties)描述所有事件共享的属性,而每个事件类型描述特定事件唯一的 `payload` 属性。 {% ifversion fpt or ghec %} @@ -31,7 +31,7 @@ ms.locfileid: '146064241' | 事件 API 属性名称 | 说明 | |--------------------------|-------------| | `id` | 事件的唯一标识符。 | -| `type` | 事件的类型。 事件使用 PascalCase 作为名称。 | +| `type` | 事件的类型。事件使用 PascalCase 作为名称。 | | `actor` | 触发事件的用户。 | | `actor.id` | 执行者的唯一标识符。 | | `actor.login` | 执行者的用户名。 | @@ -41,11 +41,11 @@ ms.locfileid: '146064241' | `actor.avatar_url` | 执行者个人资料图像的 URL。 | | `repo` | 发生事件的仓库对象。 | | `repo.id` | 仓库的唯一标识符。 | -| `repo.name` | 仓库名称,包括所有者和仓库的名称。 例如,`octocat/hello-world` 是 `octocat` 个人帐户拥有的 `hello-world` 存储库的名称。 | +| `repo.name` | 仓库名称,包括所有者和仓库的名称。例如,`octocat/hello-world` 是 `octocat` 个人帐户拥有的 `hello-world` 存储库的名称。 | | `repo.url` | 用于检索仓库对象的 REST API URL,其中包括更多仓库信息。 | -| `payload` | 事件有效负载对象对于事件类型是唯一的。 有关事件 API `payload` 对象,请参阅下面的事件类型。 | +| `payload` | 事件有效负载对象对于事件类型是唯一的。有关事件 API `payload` 对象,请参阅下面的事件类型。 | | `public` | 事件是否对所有用户可见。 | -| `created_at` | 触发事件的日期和时间。 它根据 ISO 8601 设置格式。 | +| `created_at` | 触发事件的日期和时间。它根据 ISO 8601 设置格式。 | | `org` | 由行动者选择的组织来执行触发事件的操作。
该属性仅在适用时才会显示在事件对象中。 | | `org.id` | 组织的唯一标识符。 | | `org.login` | 组织名称。 | @@ -202,7 +202,7 @@ Link: ; rel="next", 密钥 | 类型 | 说明 ----|------|------------- -`action` | `string` | 执行的操作内容. 可以为 `created`。 +`action` | `string` | 执行的操作内容。可以为 `created`。 `pull_request` | `object` | 与审查相关的拉取请求。 `review` | `object` | 受影响的审查。 @@ -239,10 +239,10 @@ Link: ; rel="next", `push_id` | `integer` | 推送的唯一标识符。 `size`|`integer` | 推送中的提交数。 `distinct_size`|`integer` | 推送中不同提交的数量。 -`ref`|`string` | 推送的完整 [`git ref`](/rest/reference/git#refs)。 示例:`refs/heads/main`。 +`ref`|`string` | 推送的完整 [`git ref`](/rest/reference/git#refs)。示例:`refs/heads/main`。 `head`|`string` | 推送之后在 `ref` 上最近提交的 SHA。 `before`|`string` | 推送之前在 `ref` 上最近提交的 SHA。 -`commits`|`array` | 描述所推送提交的提交对象数组。 (该数组最多包含 20 个提交。 如有必要,可使用[提交 API](/rest/reference/repos#commits) 获取更多提交。 此限制仅适用于时间表事件,而不适用于 web 挂钩递送。) +`commits`|`array` | 描述所推送提交的提交对象数组。 (该数组最多包含 20 个提交。如有必要,可使用[提交 API](/rest/reference/repos#commits) 获取更多提交。此限制仅适用于时间表事件,而不适用于 web 挂钩递送。) `commits[][sha]`|`string` | 提交的 SHA。 `commits[][message]`|`string` | 提交消息。 `commits[][author]`|`object` | 提交的 Git 作者。 diff --git a/translations/zh-CN/content/developers/webhooks-and-events/events/issue-event-types.md b/translations/zh-CN/content/developers/webhooks-and-events/events/issue-event-types.md index e09cbb4a975c..dcf01413fd56 100644 --- a/translations/zh-CN/content/developers/webhooks-and-events/events/issue-event-types.md +++ b/translations/zh-CN/content/developers/webhooks-and-events/events/issue-event-types.md @@ -18,13 +18,13 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/09/2022 ms.locfileid: '147875988' --- -问题事件由问题和拉取请求中的活动触发,在[问题事件 API](/rest/reference/issues#events) 和[时间线事件 API](/rest/reference/issues#timeline) 中可用。 每个事件类型指定事件是否可用于议题事件或时间表事件 API。 +问题事件由问题和拉取请求中的活动触发,在[问题事件 API](/rest/reference/issues#events) 和[时间线事件 API](/rest/reference/issues#timeline) 中可用。每个事件类型指定事件是否可用于议题事件或时间表事件 API。 -GitHub 的 REST API 认为每个拉取请求都是一个议题,但并非每个议题都是拉取请求。 因此,议题事件和时间表事件端点可能在响应中同时返回议题和拉取请求。 拉取请求在 `issue` 对象中有一个 `pull_request` 属性。 因为拉取请求也是议题,因此议题和拉取请求编号在仓库中不会重叠。 例如,如果您在仓库中打开了您的第一个议题,则编号将为 1。 如果您随后打开了一个拉取请求,则编号将为 2。 每个事件类型指定事件是否发生在拉取请求和/或议题中。 +GitHub 的 REST API 认为每个拉取请求都是一个议题,但并非每个议题都是拉取请求。因此,议题事件和时间表事件端点可能在响应中同时返回议题和拉取请求。拉取请求在 `issue` 对象中有一个 `pull_request` 属性。因为拉取请求也是议题,因此议题和拉取请求编号在仓库中不会重叠。例如,如果您在仓库中打开了您的第一个议题,则编号将为 1。如果您随后打开了一个拉取请求,则编号将为 2。每个事件类型指定事件是否发生在拉取请求和/或议题中。 ## 议题事件对象公共属性 -议题事件都具有相同的对象结构,但仅在时间表事件 API 中可用的事件除外。 某些事件还包括可提供有关事件资源更多上下文的其他属性。 有关不同于此对象格式的任何属性的详细信息,请参阅特定事件。 +议题事件都具有相同的对象结构,但仅在时间表事件 API 中可用的事件除外。某些事件还包括可提供有关事件资源更多上下文的其他属性。有关不同于此对象格式的任何属性的详细信息,请参阅特定事件。 {% data reusables.issue-events.issue-event-common-properties %} @@ -102,7 +102,7 @@ GitHub 尝试自动更改拉取请求的基本分支已成功。 ## 已关闭 -议题或拉取请求已关闭。 `commit_id` 存在时,它会使用“closes/fixes”语法标识关闭问题的提交。 有关语法的详细信息,请参阅“[将拉取请求链接到问题](/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)”。 +议题或拉取请求已关闭。 `commit_id` 存在时,它会使用“closes/fixes”语法标识关闭问题的提交。有关语法的详细信息,请参阅“[将拉取请求链接到问题](/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)”。 ### 可用性 @@ -138,7 +138,7 @@ GitHub 尝试自动更改拉取请求的基本分支已成功。 `user` | `object` | 对议题发表评论的人。 `created_at` | `string` | 指示评论添加时间的时间戳。 `updated_at` | `string` | 指示评论更新或创建(如果从未更新)时间的时间戳。 -`author_association` | `string` | 用户在议题仓库中拥有的权限。 例如,如果存储库的所有者创建了注释,该值将为 `"OWNER"`。 +`author_association` | `string` | 用户在议题仓库中拥有的权限。例如,如果存储库的所有者创建了注释,该值将为 `"OWNER"`。 `body` | `string` | 评论正文文本。 `event` | `string` | 事件值为 `"commented"`。 `actor` | `object` | 生成事件的人。 @@ -168,12 +168,12 @@ GitHub 尝试自动更改拉取请求的基本分支已成功。 `tree` | `object` | 提交的 Git 树。 `message` | `string` | 提交消息。 `parents` | `array of objects` | 父提交的列表。 -`verification` | `object` | 验证提交签名的结果。 有关详细信息,请参阅“[签名验证对象](/rest/reference/git#get-a-commit)”。 +`verification` | `object` | 验证提交签名的结果。有关详细信息,请参阅“[签名验证对象](/rest/reference/git#get-a-commit)”。 `event` | `string` | 事件值为 `"committed"`。 ## 已连接 -议题或拉取请求已链接到另一个议题或拉取请求。 有关详细信息,请参阅“[将拉取请求链接到问题](/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue)”。 +议题或拉取请求已链接到另一个议题或拉取请求。有关详细信息,请参阅“[将拉取请求链接到问题](/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue)”。 ### 可用性 @@ -235,7 +235,7 @@ GitHub 尝试自动更改拉取请求的基本分支已成功。 `created_at` | `string` | 指示交叉引用添加时间的时间戳。 `updated_at` | `string` | 指示交叉引用更新或创建(如果从未更新)时间的时间戳。 `source` | `object` | 添加交叉引用的议题或拉取请求。 -`source[type]` | `string` | 该值始终为 `"issue"`,因为拉取请求属于类型问题。 在时间表事件 API 中仅返回由议题或拉取请求触发的交叉引用事件。 若要确定触发事件的问题是否为拉取请求,可以检查 `source[issue][pull_request]` 对象是否存在。 +`source[type]` | `string` | 该值始终为 `"issue"`,因为拉取请求属于类型问题。在时间表事件 API 中仅返回由议题或拉取请求触发的交叉引用事件。若要确定触发事件的问题是否为拉取请求,可以检查 `source[issue][pull_request]` 对象是否存在。 `source[issue]` | `object` | 添加交叉引用的 `issue` 对象。 `event` | `string` | 事件值为 `"cross-referenced"`。 @@ -284,7 +284,7 @@ GitHub 尝试自动更改拉取请求的基本分支已成功。 ## 已断开连接 -议题或拉取请求与另一个议题或拉取请求取消链接。 有关详细信息,请参阅“[将拉取请求链接到问题](/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue)”。 +议题或拉取请求与另一个议题或拉取请求取消链接。有关详细信息,请参阅“[将拉取请求链接到问题](/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue)”。 ### 可用性 @@ -587,10 +587,10 @@ GitHub 尝试自动更改拉取请求的基本分支已成功。 `body` | `string` | 审查摘要文本。 `commit_id` | `string` | 审查时拉取请求中最新提交的 SHA。 `submitted_at` | `string` | 指示审查提交时间的时间戳。 -`state` | `string` | 已提交审查的状态。 可以是下述之一:`commented`、`changes_requested` 或 `approved`。 +`state` | `string` | 已提交审查的状态。可以是下述之一:`commented`、`changes_requested` 或 `approved`。 `html_url` | `string` | 审查的 HTML URL。 `pull_request_url` | `string` | 用于检索拉取请求的 REST API URL。 -`author_association` | `string` | 用户在议题仓库中拥有的权限。 例如,如果存储库的所有者创建了注释,该值将为 `"OWNER"`。 +`author_association` | `string` | 用户在议题仓库中拥有的权限。例如,如果存储库的所有者创建了注释,该值将为 `"OWNER"`。 `_links` | `object` | `html_url` 和 `pull_request_url`。 `event` | `string` | 事件值为 `"reviewed"`。 @@ -709,7 +709,7 @@ GitHub 尝试自动更改拉取请求的基本分支已成功。 {% ifversion fpt or ghec %} ## user_blocked -组织所有者阻止了用户访问组织。 这是[通过被阻止的用户对该问题的注释之一](/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization#blocking-a-user-in-a-comment)完成的。 +组织所有者阻止了用户访问组织。这是[通过被阻止的用户对该问题的注释之一](/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization#blocking-a-user-in-a-comment)完成的。 ### 可用性 diff --git a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/about-webhooks.md b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/about-webhooks.md index bfe81768252a..232da5c27ef5 100644 --- a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/about-webhooks.md +++ b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/about-webhooks.md @@ -18,9 +18,9 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/11/2022 ms.locfileid: '145097989' --- -Webhook 允许生成或设置集成,例如 [{% data variables.product.prodname_github_apps %}](/apps/building-github-apps/) 或 [{% data variables.product.prodname_oauth_apps %}](/apps/building-oauth-apps/),以订阅 GitHub.com 上的某些事件。 当触发其中某个事件时,我们将向 web 挂钩的配置 URL 发送 HTTP POST 有效负载。 Web 挂钩可用于更新外部议题跟踪器、触发 CI 构建、更新备份镜像,甚至部署到生产服务器。 您只受想象力的限制。 +Webhook 允许生成或设置集成,例如 [{% data variables.product.prodname_github_apps %}](/apps/building-github-apps/) 或 [{% data variables.product.prodname_oauth_apps %}](/apps/building-oauth-apps/),以订阅 GitHub.com 上的某些事件。当触发其中某个事件时,我们将向 web 挂钩的配置 URL 发送 HTTP POST 有效负载。Web 挂钩可用于更新外部议题跟踪器、触发 CI 构建、更新备份镜像,甚至部署到生产服务器。您只受想象力的限制。 -Webhook 可以安装在 {% ifversion ghes or ghae %} [{% data variables.product.prodname_enterprise %}](/rest/reference/enterprise-admin#global-webhooks/)、{% endif %} [组织][org-hooks]、特定[存储库][repo-hooks]或 {% data variables.product.prodname_github_app %} 上。 安装后,每当发生一个或多个订阅事件时,都会发送 web 挂钩。 +Webhook 可以安装在 {% ifversion ghes or ghae %} [{% data variables.product.prodname_enterprise %}](/rest/reference/enterprise-admin#global-webhooks/)、{% endif %} [组织][org-hooks]、特定 [存储库][repo-hooks] 或 {% data variables.product.prodname_github_app %} 上。安装后,每当发生一个或多个订阅事件时,都会发送 web 挂钩。 最多可以为每个安装目标 {% ifversion ghes or ghae %}({% data variables.product.prodname_ghe_server %} 实例、特定组织或特定存储库){% else %}(特定组织或特定存储库){% endif %}上的每个事件创建最多 {% ifversion ghes or ghae %}250{% else %}20{% endif %} 个 Webhook。 @@ -28,7 +28,7 @@ Webhook 可以安装在 {% ifversion ghes or ghae %} [{% data variables.product. {% data reusables.webhooks.webhooks_intro %} -每个事件对应于您的组织和/或仓库可能发生的一组特定操作。 例如,如果订阅了 `issues` 事件,则在每次打开、关闭、标记问题等时,你都会收到详细的有效负载。 +每个事件对应于您的组织和/或仓库可能发生的一组特定操作。例如,如果订阅了 `issues` 事件,则在每次打开、关闭、标记问题等时,你都会收到详细的有效负载。 有关可用 Webhook 事件及其有效负载的完整列表,请参阅“[Webhook 事件和有效负载](/developers/webhooks-and-events/webhook-events-and-payloads)”。 diff --git a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/configuring-your-server-to-receive-payloads.md b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/configuring-your-server-to-receive-payloads.md index b372db0216bd..d94205467e04 100644 --- a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/configuring-your-server-to-receive-payloads.md +++ b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/configuring-your-server-to-receive-payloads.md @@ -23,15 +23,15 @@ ms.locfileid: '145097985' {% note %} -注意:可以[从 platform-samples 存储库][platform samples]中下载此项目的完整源代码。 +注意:可以 [从 platform-samples 存储库][platform samples] 中下载此项目的完整源代码。 {% endnote %} ## 编写服务器 -我们希望我们的服务器在 `/payload` 处侦听 `POST` 请求,因为这是我们告诉 GitHub 我们的 Webhook URL 所在的位置。 因为我们使用 ngrok 来公开我们的本地环境,所以我们不需要在某个在线位置设置一个真实的服务器,并且可以轻松地在本地测试我们的代码。 +我们希望我们的服务器在 `/payload` 处侦听 `POST` 请求,因为这是我们告诉 GitHub 我们的 Webhook URL 所在的位置。因为我们使用 ngrok 来公开我们的本地环境,所以我们不需要在某个在线位置设置一个真实的服务器,并且可以轻松地在本地测试我们的代码。 -让我们设置一个小 Sinatra 应用程序来处理信息。 我们的初始设置可能如下所示: +让我们设置一个小 Sinatra 应用程序来处理信息。我们的初始设置可能如下所示: ``` ruby require 'sinatra' @@ -47,7 +47,7 @@ end 启动此服务器。 -由于我们设置了 Webhook 来侦听处理 `Issues` 的事件,因此请继续操作,并在正在测试的存储库上创建一个新问题。 创建后,切换回终端。 您应该会在输出中看到以下内容: +由于我们设置了 Webhook 来侦听处理 `Issues` 的事件,因此请继续操作,并在正在测试的存储库上创建一个新问题。创建后,切换回终端。您应该会在输出中看到以下内容: ```shell $ ~/Developer/platform-samples/hooks/ruby/configuring-your-server $ ruby server.rb @@ -58,7 +58,7 @@ $ ~/Developer/platform-samples/hooks/ruby/configuring-your-server $ ruby server. > I got some JSON: {"action"=>"opened", "issue"=>{"url"=>"... ``` -成功! 您已成功配置服务器以侦听 web 挂钩。 你的服务器现在可以按照你认为合适的任何方式处理此信息。 例如,如果要设置“真实的”Web 应用程序,则可能需要将一些 JSON 输出记录到数据库中。 +成功!您已成功配置服务器以侦听 web 挂钩。你的服务器现在可以按照你认为合适的任何方式处理此信息。例如,如果要设置“真实的”Web 应用程序,则可能需要将一些 JSON 输出记录到数据库中。 有关使用 Webhook 获得乐趣和利润的更多信息,请参阅[测试 Webhook](/webhooks/testing) 指南。 diff --git a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/creating-webhooks.md b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/creating-webhooks.md index 1b3dcd47a013..9b0c352c7d3c 100644 --- a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/creating-webhooks.md +++ b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/creating-webhooks.md @@ -18,40 +18,40 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/11/2022 ms.locfileid: '145097984' --- -学完 [webhook 的基础知识][webhooks-overview]后,接下来了解如何生成自己的基于 webhook 的集成。 在本教程中,我们将创建一个仓库 web 挂钩,它将负责根据仓库每天收到的议题数量列出仓库的受欢迎程度。 +学完 [webhook 的基础知识][webhooks-overview] 后,接下来了解如何生成自己的基于 webhook 的集成。在本教程中,我们将创建一个仓库 web 挂钩,它将负责根据仓库每天收到的议题数量列出仓库的受欢迎程度。 -创建 web 挂钩是一个两步过程。 首先需要设置 web 挂钩通过 {% data variables.product.product_name %} 实施的行为 - 它应该侦听哪些事件。 之后,您将设置服务器以接收和管理有效负载。 +创建 web 挂钩是一个两步过程。首先需要设置 web 挂钩通过 {% data variables.product.product_name %} 实施的行为 - 它应该侦听哪些事件。之后,您将设置服务器以接收和管理有效负载。 {% data reusables.webhooks.webhooks-rest-api-links %} ## 向互联网显示本地主机 -在本教程中,我们将使用本地服务器接收来自 {% data variables.product.prodname_dotcom %} 的消息。 因此,首先,我们需要将我们的本地发展环境显示给互联网。 我们将使用 ngrok 实现此目的。 所有主要操作系统均可免费使用 ngrok。 有关详细信息,请参阅 [`ngrok` 下载页面](https://ngrok.com/download)。 +在本教程中,我们将使用本地服务器接收来自 {% data variables.product.prodname_dotcom %} 的消息。因此,首先,我们需要将我们的本地发展环境显示给互联网。我们将使用 ngrok 实现此目的。所有主要操作系统均可免费使用 ngrok。有关详细信息,请参阅 [`ngrok` 下载页面](https://ngrok.com/download)。 -安装 `ngrok` 后,可以通过在命令行上运行 `./ngrok http 4567` 来公开本地主机。 4567 是我们服务器侦听消息的端口号。 您应该会看到如下所示的行: +安装 `ngrok` 后,可以通过在命令行上运行 `./ngrok http 4567` 来公开本地主机。4567 是我们服务器侦听消息的端口号。您应该会看到如下所示的行: ```shell $ Forwarding http://7e9ea9dc.ngrok.io -> 127.0.0.1:4567 ``` -记下 `*.ngrok.io` URL。 我们将用它来设置 web 挂钩。 +记下 `*.ngrok.io` URL。我们将用它来设置 web 挂钩。 ## 设置 Webhook 您可以在组织或特定仓库上安装 web 挂钩。 -要设置 web 挂钩,请转到仓库或组织的设置页面。 然后,依次单击“Webhook”和“添加 Webhook” 。 +要设置 web 挂钩,请转到仓库或组织的设置页面。然后,依次单击“Webhook”和“添加 Webhook” 。 -另外,你可以选择[使用 Webhook API][webhook-api] 生成和管理 Webhook。 +另外,你可以选择 [使用 Webhook API][webhook-api] 生成和管理 Webhook。 -Web 挂钩需要设置几个配置选项才能使用。 我们将在下面介绍所有这些设置。 +Web 挂钩需要设置几个配置选项才能使用。我们将在下面介绍所有这些设置。 ## 有效负载 URL {% data reusables.webhooks.payload_url %} -由于我们为本教程进行本地开发,因此将其设置为 `*.ngrok.io` URL,且后接 `/payload`。 例如 `http://7e9ea9dc.ngrok.io/payload`。 +由于我们为本教程进行本地开发,因此将其设置为 `*.ngrok.io` URL,且后接 `/payload`。例如 `http://7e9ea9dc.ngrok.io/payload`。 ## 内容类型 @@ -67,23 +67,23 @@ Web 挂钩需要设置几个配置选项才能使用。 我们将在下面介绍 ## 活动 -默认情况下,web 挂钩交付为“Active(激活)”。 您可以通过取消选择“Active(激活)”来选择禁用 web 挂钩交付。 +默认情况下,web 挂钩交付为“Active(激活)”。您可以通过取消选择“Active(激活)”来选择禁用 web 挂钩交付。 ## 事件 -事件是 web 挂钩的核心。 当仓库上发生特定操作时,就会触发这些 web 挂钩,而服务器的有效负载 URL 会截获它们并采取行动。 +事件是 web 挂钩的核心。当仓库上发生特定操作时,就会触发这些 web 挂钩,而服务器的有效负载 URL 会截获它们并采取行动。 可在 [webhook API][hooks-api] 参考中找到完整的 webhook 事件列表及其执行时间。 -由于 webhook 正在处理存储库中的问题,因此单击“选择单个事件”,然后单击“问题” 。 请确保选择“可用”以接收触发的 Webhook 的问题事件。 您还可以使用默认选项选择所有事件。 +由于 webhook 正在处理存储库中的问题,因此单击“选择单个事件”,然后单击“问题” 。请确保选择“可用”以接收触发的 Webhook 的问题事件。您还可以使用默认选项选择所有事件。 完成后,单击“添加 Webhook”。 -现在您创建了 web 挂钩,是时候设置我们的本地服务器来测试 web 挂钩了。 转到[配置服务器](/webhooks/configuring/),了解如何实现这一目标。 +现在您创建了 web 挂钩,是时候设置我们的本地服务器来测试 web 挂钩了。转到[配置服务器](/webhooks/configuring/),了解如何实现这一目标。 ### 通配符事件 -要为所有事件配置 webhook,请使用通配符 (`*`) 指定 webhook 事件。 添加通配符事件时,我们将用通配符事件替换您配置的任何现有事件,并向您发送所有受支持事件的有效负载。 您还会自动获取我们可能在将来添加的任何新事件。 +要为所有事件配置 webhook,请使用通配符 (`*`) 指定 webhook 事件。添加通配符事件时,我们将用通配符事件替换您配置的任何现有事件,并向您发送所有受支持事件的有效负载。您还会自动获取我们可能在将来添加的任何新事件。 [webhooks-overview]: /webhooks/ [webhook-api]: /rest/reference/repos#hooks diff --git a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/securing-your-webhooks.md b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/securing-your-webhooks.md index 556bea9e8f2c..15aa0f073b7f 100644 --- a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/securing-your-webhooks.md +++ b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/securing-your-webhooks.md @@ -18,7 +18,7 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/09/2022 ms.locfileid: '147707477' --- -一旦服务器配置为接收有效负载,它将侦听发送到您配置的端点的任何有效负载。 出于安全原因,您可能需要将请求限制为来自 GitHub 的请求。 有几种方法可以做到这一点,例如,您可以选择允许来自 GitHub 的 IP 地址的请求,但更简单的方法是设置一个密钥令牌并验证信息。 +一旦服务器配置为接收有效负载,它将侦听发送到您配置的端点的任何有效负载。出于安全原因,您可能需要将请求限制为来自 GitHub 的请求。有几种方法可以做到这一点,例如,您可以选择允许来自 GitHub 的 IP 地址的请求,但更简单的方法是设置一个密钥令牌并验证信息。 {% data reusables.webhooks.webhooks-rest-api-links %} @@ -29,11 +29,11 @@ ms.locfileid: '147707477' 要在 GitHub 上设置令牌: 1. 导航到要在其中设置 Webhook 的存储库。 -2. 填写密钥文本框。 使用高熵值随机字符串(例如,通过在终端获取 `ruby -rsecurerandom -e 'puts SecureRandom.hex(20)'` 的输出)。 +2. 填写密钥文本框。使用高熵值随机字符串(例如,通过在终端获取 `ruby -rsecurerandom -e 'puts SecureRandom.hex(20)'` 的输出)。 ![Webhook 机密令牌字段](/assets/images/webhook_secret_token.png) 3. 单击“更新 Webhook”。 -接下来,在服务器上设置存储此令牌的环境变量。 通常,这简单如运行以下命令: +接下来,在服务器上设置存储此令牌的环境变量。通常,这简单如运行以下命令: ```shell $ export SECRET_TOKEN=your_token @@ -43,11 +43,11 @@ $ export SECRET_TOKEN=your_token ## 验证来自 GitHub 的有效负载 -设置密钥令牌后,{% data variables.product.product_name %} 使用它为每个有效负载创建一个哈希签名。 此哈希签名作为 `x-hub-signature-256` 包含在每个请求的标头中。 +设置密钥令牌后,{% data variables.product.product_name %} 使用它为每个有效负载创建一个哈希签名。此哈希签名作为 `x-hub-signature-256` 包含在每个请求的标头中。 {% ifversion fpt or ghes or ghec %} {% note %} -注意:为了向后兼容,我们还会包含使用 SHA-1 哈希函数生成的 `x-hub-signature` 标头。 如果可能,建议使用 `x-hub-signature-256` 标头来提高安全性。 下面的示例演示了如何使用 `x-hub-signature-256` 标头。 +注意:为了向后兼容,我们还会包含使用 SHA-1 哈希函数生成的 `x-hub-signature` 标头。如果可能,建议使用 `x-hub-signature-256` 标头来提高安全性。下面的示例演示了如何使用 `x-hub-signature-256` 标头。 {% endnote %} {% endif %} @@ -83,14 +83,14 @@ end {% note %} -注意:Webhook 有效负载可以包含 unicode 字符。 如果您的语言和服务器实现指定了字符编码,请确保您将有效负载处理为 UTF-8。 +注意:Webhook 有效负载可以包含 unicode 字符。如果您的语言和服务器实现指定了字符编码,请确保您将有效负载处理为 UTF-8。 {% endnote %} -您的语言和服务器实现可能与此示例代码不同。 但是,需要指出一些非常重要的事情: +您的语言和服务器实现可能与此示例代码不同。但是,需要指出一些非常重要的事情: * 无论使用哪种实现方式,哈希签名都使用机密令牌和有效负载主体的密钥,以 `sha256=` 开头。 -* 不建议使用普通的 `==` 运算符。 像 [`secure_compare`][secure_compare] 这样的方法会执行“恒定时间”字符串比较,这有助于缓解针对常规相等运算符的某些定时攻击。 +* 不建议使用普通的 `==` 运算符。像 [`secure_compare`][secure_compare] 这样的方法会执行“恒定时间”字符串比较,这有助于缓解针对常规相等运算符的某些定时攻击。 [secure_compare]: https://rubydoc.info/github/rack/rack/main/Rack/Utils:secure_compare diff --git a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/testing-webhooks.md b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/testing-webhooks.md index ead0154675c5..aad5fab28eae 100644 --- a/translations/zh-CN/content/developers/webhooks-and-events/webhooks/testing-webhooks.md +++ b/translations/zh-CN/content/developers/webhooks-and-events/webhooks/testing-webhooks.md @@ -19,11 +19,11 @@ ms.contentlocale: zh-CN ms.lasthandoff: 09/05/2022 ms.locfileid: '145996215' --- -现在,你已经[配置了本地服务器](/webhooks/configuring/),可能有兴趣将代码推到极限。 为此,GitHub 的 Webhook 视图提供了一些工具来测试已部署的有效负载。 +现在,你已经[配置了本地服务器](/webhooks/configuring/),可能有兴趣将代码推到极限。为此,GitHub 的 Webhook 视图提供了一些工具来测试已部署的有效负载。 ## 列出最近的交付 -每个 web 挂钩都有自己的“最近交付”部分,它一目了然地列出了交付是成功(绿色钩号)还是失败(红色 x)。 您还可以确定每个交付的尝试时间。 +每个 web 挂钩都有自己的“最近交付”部分,它一目了然地列出了交付是成功(绿色钩号)还是失败(红色 x)。您还可以确定每个交付的尝试时间。 {% data variables.product.product_name %} 将每个 Webhook 交付的日志保留 {% ifversion fpt or ghec %} 30 {% else %} 8 {% endif %} 天。 @@ -31,7 +31,7 @@ ms.locfileid: '145996215' ## 挖掘结果 -通过展开单个交付,你将能够精确地见证 GitHub 尝试向服务器发送哪些信息。 这包括 HTTP 请求和响应。 +通过展开单个交付,你将能够精确地见证 GitHub 尝试向服务器发送哪些信息。这包括 HTTP 请求和响应。 ### 请求 @@ -42,6 +42,6 @@ Web 挂钩交付视图提供有关 GitHub 发送哪些标头的信息。 ### 响应 -响应选项卡列出了服务器从 GitHub 收到有效负载后如何响应。 这包括状态代码、标头以及响应正文中的任何其他数据。 +响应选项卡列出了服务器从 GitHub 收到有效负载后如何响应。这包括状态代码、标头以及响应正文中的任何其他数据。 ![查看有效负载响应](/assets/images/payload_response_tab.png)