如何解决“拒绝允许 OAuth 应用程序创建或更新工作流”的 git 推

得到

拒绝允许 OAuth 应用程序在没有 workflow作用域的情况下创建或更新工作流 .github/workflows/cd.yml

如何授予 workflow作用域?

73830 次浏览

当我试图使用 IntelliJ 推送到一个包含 GitHub Action 工作流(YAML文件在。Github/workflow).我没有发现现有的资源在互联网上非常有帮助,所以我希望这将帮助您修复它。

DR: 使用 GitHub 中启用的 workflow作用域更新您的个人访问令牌,或者创建一个新的作用域,并配置您的应用程序使用它。

背景: 具有 GitHub 集成的第三方工具,如 IntelliJ、 Visual Studio Code、 GitHub Desktop 等,使用令牌连接到您的 GitHub 帐户,这样它们就可以代表您进行拉取/推送等操作。在 IntelliJ 的例子中,他们的指令只说要包括 repogistread:org作用域。但是您需要 workflow作用域来修改 GitHub 操作。

以下是解决方法:

  1. 在您的 Github 帐户中,转到 设定(在您的头像下拉列表的右上角)
  2. 转到 开发人员设置 > 个人通行证
  3. 如果列出了令牌,请将其更新为包含 workflow作用域:
    • 单击标记名称。
    • 选择 workflow范围并保存。
    • 如果您使用的应用程序不会自动重新获取您的令牌的权限,您可能必须创建一个新的(步骤4以下)。
    • 单击 更新令牌保存更改。完成!
  4. 如果这里没有列出令牌,那么生成一个新的令牌:
    • 点击 生成 Token
    • 选择所需的作用域,包括 workflow
    • 仔细阅读信息,然后单击 OK 继续。
    • 复制 Github 显示的新标记。
    • 将新标记应用于应用程序。例如,对于 Intellij IDE,转到 设定 > 版本控制 > GitHub,删除现有的集成并重新添加它,粘贴到新的令牌中。

对于 Windows 10: 进入设置-> 凭证管理器-> Windows 凭证-> 删除 GitHub.com 凭证-> git pull/push your GitHub project from git-bash sole-> 在 IDE/Source 控件中重新连接 GitHub 帐户。 你不需要用“工作流”创建个人访问令牌,你不需要创建秘密 GITHUB _ TOKEN (它创建自动而不能创建手动)

我不得不把我的 Windows 的 Git升级到2.29.2.2版本。这允许 git 命令行通过浏览器进行登录,GitHub 现在需要这样做。

我这样做后,尝试 Windows 凭证管理器重置和重新生成我的个人访问令牌,但没有解决它。但它确实让 GitHub 给我发了这样一封电子邮件:

[ GitHub ]操作要求-不再支持 GitforWindows 中的密码身份验证

我们发现您最近试图使用旧版本的 Git for Windows 对 GitHub 进行身份验证。GitHub 改变了用户在 Windows 环境下使用 Git 进行身份验证的方式,现在需要使用 Web 浏览器对 GitHub 进行身份验证。为了能够通过网络浏览器登录,用户需要更新到最新版本的 Git for Windows。

我在试图推动 CLion 2020.2.3的变更时遇到了这个问题。Github workflow build.yml.CLion 似乎使用了“ JetBrains IDE Integration”令牌(GitHub Settings-> Applications-> Authorized OAuth Apps) ,它不包括“工作流”作用域。似乎没有更改此令牌范围的方法。

我使用正确的权限创建了一个新的 Personal Access Token (GitHub Settings-> Developer sets-> Personal Access Token-> Generate new Token) ,但是我无法配置 CLion 来使用它。

最终,我能够使用 GitHub 桌面来推送提交。

我在 GitKraken 上就遇到了这种情况,我只是断开了 GitHub 和 GitKraken 的连接,然后重新连接,它就工作了。

在我的例子中,我在 macOS Keychain 中使用了陈旧的 GitHub 凭证。我正在修改一个工作流文件并从命令行推送更改,因此我根本没有考虑检查 Keychain。从 macOS Keychain 更新凭据解释了如何使用 git credential-osxkeychain来擦除钥匙链:

$ git credential-osxkeychain erase
host=github.com
protocol=https
> [Press Return]

然后我必须再次输入我的用户名和密码。这次我生成了一个新的个人访问令牌,并使用该令牌作为密码。这样我就可以最终推动工作流的变更。

这个问题的发生也仅仅是因为您当前的令牌不允许在 Github 上使用工作流。 执行以下步骤来修复

对于在 MacOS 上使用 Android Studio 的用户:

  1. 删除当前令牌(参数设置-> 版本控制-> GitHub) : enter image description here

记得按“确定”按钮。

  1. 尝试从 Android Studio 中再次推/拉,现在将出现一个弹出窗口。 enter image description here

  2. 点击使用令牌... 按钮,另一个弹出窗口将出现。 enter image description here

  3. 单击 Generate,您将被发送到 GitHub 网站以生成一个新令牌。请记住选择工作流权限。 enter image description here

  4. 单击 GeneratedButton 获取一个新标记,并在步骤3中将其粘贴到 AndroidStudio。都安排好了。

我在 PHPStorm 上也遇到过这种情况。我试图使用 IDE 来提交和推动我的修改,所以当我得到错误,我试图推与 IDE 控制台的命令行,我得到了它。

在 Windows10操作系统下面是我是如何一步一步地解决这个问题的

我已经包括了很多截图,因为这是很难解决,然后它应该是。

事后看来,@CSRed靓鼠说的是对的,但当我遇到问题时,我不能理解,因为答案太简洁了。

最终引导我找到解决方案的是 这篇文章,它使情况更加清楚。

事情是这样的。当你使用 GitHub 开发者设置菜单来生成一个新的令牌,然后粘贴到 Windows 凭证管理器时,你使用 不应该,因为最终令牌将过期,然后你将再次遇到这个问题,因为没有任何东西知道如何刷新令牌,因为你手动设置它。

相反, 需要通过 Git for Windows 修复这个令牌 priv 问题。所以这个交易是“旧的”Git 认证管理器为 Windows 没有要求的权限来创建或更新工作流,但现在你需要他们。好消息是有一个新的版本,我们称为 Git 凭证经理核心,它确实要求这些特权和更多。

新的凭证管理器附带 Git 2.28及更高版本,但默认情况下不启用。如果你已经安装了这个版本的 Git for Window,那么你甚至已经拥有了这个软件。在我的情况下,我有版本2.30.2,所以我已经有了新的软件。

enter image description here

但它仍然使用我的旧 Git 的 Windows 凭证,不携带所需的马力。这可能也是你的情况,或者如果你没有一个旧版本2.28,那么你需要首先安装一个更新的版本。无论哪种方式,一旦您的机器上有了足够新的 Git for Windows 版本,下一步就是通过在 Windows 搜索框中键入“ Windows 凭据管理器”来删除旧凭据。

enter image description here

然后找到每个 git 凭证,单击它并单击删除按钮。

enter image description here

现在,当您下次尝试从 git bash Visual Studio 或您使用的任何 git 客户机访问 get 帐户时,系统将提示您输入新凭据,因为旧凭据已经不存在了。单击下面对话框中的 Sign in with your browser按钮:

enter image description here

然后你会看到一个像下面这样的网页,如果你向下展开工作流程,你会看到它正在要求你这次需要的特权。然后单击 Authorize按钮。

enter image description here

这样做之后,您将看到一个类似于下面这样的页面,用于提供您的 github 密码:

enter image description here

现在,您的 Windows 凭据管理器中有了一个新的凭据,该凭据具有您所需要的权限,并且过去失败的操作现在将成功。耶!

运行 macOS。我正在从 Atom 文本编辑器中推出我的 .yml工作流文件,这对我很有用。

  1. 转到 Github 个人访问令牌设置并生成一个新令牌。确保同时选择了回购和工作流访问范围。

2

  1. 转到 Mac 上的 Keychain Access 应用程序,搜索 github。我发现了一个名为 github.com的条目(如下所示) ,属于 Internet password类,即 前情提要。用步骤1中生成的令牌(以 ghp_开始)替换密码条目。

3

通过使用 Desktop Github App来推送我的更改(它似乎拥有完整的权限,而 vs 代码的作用域有限) ,修复了这个问题。

在通过推送修改后的工作流文件获得一次提交之后,我能够在 vs code中再次正常地进行推送提交。

我跟随 这篇文章安装了 Git 凭证管理器核心来自动处理这个问题——它对我(macOS)很有效:

使用自制程序:

brew tap microsoft/git
brew install --cask git-credential-manager-core

对于 IntelliJ IDE 用户,请遵循以下简单步骤:

  1. 转到 Files > Settings > Version Control > Github,点击帐户,然后点击“-”按钮,删除 Github 帐户。
  2. 然后用你的默认浏览器登录 Github.com,然后点击 我们在步骤1中打开的同一个 IDE 窗口中的“ +”按钮 选择「使用记号登入」。
  3. 点击生成按钮。
  4. 这将在您的浏览器中打开具有所有权限的 GitHub 页面 所有你需要做的就是点击’生成令牌’在 然后使用该标记在 IDE 弹出窗口中填充它 窗户。
  5. 关闭设置窗口并再次推动您的代码。这总是为我工作。

您还可以从使用 https 更改为使用 SSH。

  1. 创建您的 SSH 密钥,您可以遵循 医生
  2. 将远程控制从 https 更改为 SSH,也可以按照 医生进行操作。
  1. 找到你的信物,应该在这里 https://github.com/settings/tokens
  2. 授予 workflow如下所示 enter image description here

在推动我对 Nbdev项目的初始提交之后,我遇到了同样的问题。这对我有效:

  1. 删除 .github/workflows下的所有 .yaml文件
  2. git add .git commit -m "CommitMessage"git push
  3. 直接在 GitHub 上添加 .yaml文件(在 行动选项卡下,然后是 新的工作流程)
  4. git pull

然后您可以继续处理您的本地回购,并且应该能够将您的更改推送到 Github,而不会出现任何错误消息。

使用 Github Cli配置本地环境时发生此错误。目前还不清楚更新权限需要什么。但是,对于 CLI,您可以运行下面的命令来启用它,然后继续前进。

gh auth login --scopes workflow