# 错误：403“无法通过集成访问资源”

由 Dependabot 创建的拉取请求可能会出现此错误，可通过几种不同的方式解决。

> \[!NOTE]
> 本故障排除文章\_仅\_适用于在使用 Dependabot 时遇到此错误的情况。 如果在其他 GitHub 产品中看到此错误并难以对其进行故障排除，可以联系 GitHub 支持。 有关详细信息，请参阅“[联系 GitHub 支持团队](/zh/support/contacting-github-support)”。

## 关于此错误

```text
403: Resource not accessible by integration
```

当 Dependabot 触发工作流运行且工作流以只读范围运行时，它会被视为不受信任。

## 确认错误原因

如果在 Dependabot 工作流中使用了 code scanning，请调查其使用的作用域。

上传分支的 code scanning 结果通常需要作用域 `security-events: write`。 但是，当code scanning事件触发操作运行时，`pull_request`始终允许上传结果。 因此，对于 Dependabot 分支，我们建议使用 `pull_request` 事件而不是 `push` 事件。

## 修复问题

可以推送到默认分支和任何其他重要的长期分支，以及在此组分支上打开的拉取请求：

```yaml
on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main
```

或者，可以在除 Dependabot 分支之外的所有推送上运行：

```yaml
on:
  push:
    branches-ignore:
      - 'dependabot/**'
  pull_request:
```

### 默认分支上的分析仍然失败

如果 CodeQL 分析工作流程 在默认分支上的提交仍然失败，需要检查：

* 该提交是否由 Dependabot 创作
* 包含该提交的拉取请求是否通过压缩合并的方式进行了合并

这种类型的合并提交由 Dependabot 编写，因此，在提交上运行的任何工作流都将具有只读权限。 如果在存储库上启用了code scanningDependabot安全更新或版本更新，建议使用 **“创建合并提交**策略”在拉取请求上启用自动合并。 这样可以避免由 Dependabot 创作的压缩合并提交。 有关启用自动合并的详细信息，请参阅“[自动合并拉取请求](/zh/pull-requests/how-tos/merge-and-close-pull-requests/automatically-merging-a-pull-request#enabling-auto-merge)”。