Composer [UnexpectedValueException] 在尝试使用 Composer 安装 GitHub 项目时发生错误。

72
我正在尝试使用Composer安装一个Github项目,但是遇到以下错误:

Composer [UnexpectedValueException] 您的Github oauth令牌(token)中包含无效字符:" "

请问有人可以解释一下我需要做什么来修复这个错误吗?
我正在使用以下命令:
composer create-project --prefer-dist --stability=dev \
    vova07/yii2-start yii2-start

谢谢。

2
composer self-update 的新答案对我很有帮助:https://dev59.com/gV8d5IYBdhLWcg3wkSwV#67828227 - Ryan
14个回答

88

我开始遇到类似的错误,原因是Github最近更改了其授权令牌的格式:

https://github.blog/changelog/2021-03-31-authentication-token-format-updates-are-generally-available/

为了解决这个错误:
  1. 找到 composer/auth.json 文件(如果您在容器中运行项目,则需要进入容器并在其中找到该文件)
  2. 删除其中的 github.com 条目。删除条目后,您的文件可能看起来像以下内容:{"github-oauth": {}}
  3. 运行命令 composer self-update。该问题已在版本 2.0.12 中得到解决。请参见该版本的更改日志中的第一项:https://getcomposer.org/changelog/2.0.12
之后,您可以将 composer/auth.json 文件恢复到其初始状态,因为新版本的 composer 将识别新的密钥格式。

6
即使我尝试自更新,仍然会得到相同的错误,我无能为力。 - DarkteK
2
自更新成功了吗?因为那对我很有用。 - Walter81
2
我只需要在运行项目的容器内运行以下命令:php /usr/local/bin/composer self-update,然后它就可以正常工作了。 - rafaelbiten
7
我将我的 ~/.composer/auth.json 文件替换为 {} 以解决错误。https://dev59.com/PJnga4cB1Zd3GeqPYnP6#38746307 提到了在哪里找到这个目录。YMMV(因人而异)。 - neubert
3
请从“~/.config/composer/auth.json”文件中删除“github-oauth”行,运行“composer self-update”,然后将已删除的行添加回“auth.json”文件。 - Attila Fulop
显示剩余5条评论

80

您可以尝试使用基本身份验证:

将这个(OAuth)更改为:

  "github-oauth": {
    "github.com": "ghp_[YOUR-PERSONAL-TOKEN]"
  }

对于基本认证(basic auth):

  "http-basic": {
    "github.com": {
      "username": "[YOUR-GITHUB-USERNAME]",
      "password": "ghp_[YOUR-PERSONAL-TOKEN]"
    }
  }

您可以在此处找到创建个人访问令牌的说明。

灵感来自Github文档。 显然,您可以在某些情况下(例如:使用Composer安装私有git存储库)使用个人访问令牌代替OAuth进行基本身份验证。


6
除非你能将Composer升级到v2,否则这是唯一可行的解决方案。谢谢! - gyo
1
对我有用,我必须使用像vim这样的编辑器在我的Docker容器(而不是在我的PC上)中更新文件/root/.composer/auth.json,然后它就可以工作了。 - Paul
在更新了.composer/auth.json文件后,它对我起作用了。 - Praveen Govind

41

我解决了它。

前往C:\ Users \ XXXXX \ AppData \ Roaming \ Composer

打开auth.json文件

删除“github-oauth”下的github.com条目:{}

就这样。


4
Composer 对令牌进行了相当激进的验证。它非常严格,以至于我将 GitHub 令牌更新为新格式后遇到了错误。我使用的是 Composer 2.0.8 版本,不得不删除令牌并更新到 Composer 2.0.12,然后重新应用令牌。 - Niklas Ekman
@NiklasEkman,你是怎么解决的?我尝试过去掉github.com,但没用。你可以分享一下你的结构吗? - Thiago Dias
@Thiago,请按照上面答案中的说明操作。在删除了 github-auth 条目后,运行 composer self-update,然后将你删除的内容重新添加到文件中。 - Niklas Ekman
@ruchir.mehta 我在使用您的解决方案后仍然收到这个错误。顺便感谢您提供文件位置,我之前找文件很困难。[Seld\JsonLint\ParsingException] “C:/Users/umair/AppData/Roaming/Composer/auth.json” 不包含有效的 JSON 数据。在第一行出现解析错误:"github-oauth": {},期望出现 'EOF','}',',' 或 ']' 中的一个。 - Umair
谢谢你,解决了我的问题两次。 - Abdellah Ramadan
显示剩余3条评论

18

为Masiorama和Ruchir Mehta更新答案:

如果您正在寻找auth.json文件但不知道如何操作,请使用此命令:

locate auth.json

以下是结果:
您可以看到auth.json文件的位置如下:

/home/{您的用户名}/.config/composer/auth.json

enter image description here

然后,您可以使用以下命令编辑该文件:

sudo gedit /home/dev/.config/composer/auth.json

并删除github-oauth中的内容。 enter image description here


并没有真正帮助。我生成的下一个标记也是无效的。 - Black

14
如果您使用的是MacOS系统,则auth.json文件位于~/.composer/auth.json。然后,您可以从中删除github-oauth的值。我尝试完全删除文件,但收到了解析错误:预期其中之一:'STRING'、'NUMBER'、'NULL'、'TRUE'、'FALSE'、'{'、'['。您的auth.json文件应该如下所示:
{
        "github-oauth": {}
}

这与其他已发布的答案类似,但我无法在MacOS上使用locate命令,因此这可能对其他Mac用户有所帮助。


7

这个错误最近突然出现。

直接删除整个auth文件,解决了我的问题..!不确定为什么/它在第一次出现的时候。

~/.composer/auth.json


5
据我所知(我也是composer的初学者),问题出在您的认证上,因此您需要在path-to-composer/.composer/下的auth.json中修复您的凭据。
在其中,您将找到一个类似于以下内容的json:
{
  "github-oauth": {
    "github.com": null
  }
}

修复这个问题,然后你就可以正常了 ;)

4
如果你不知道如何手动修复,一种更简单的解决方案是完全删除auth.json文件。这样做的话,下一次准备项目时系统会尝试重新创建凭证。 ;) - Masiorama
5
对于那些在Linux上查找以上路径的人:~/.config/composer/auth.json,我今天花了很多时间才找到 :) - Johhn
1
我已经对这个答案进行了更新,请查看。 - fudu

3

前往C:\Users\UserName\AppData\Roaming\Composer 打开auth.json文件。 清空所有内容,然后粘贴以下代码

{
"bitbucket-oauth": {},
"github-oauth": {},
"gitlab-oauth": {},
"gitlab-token": {},
"http-basic": {},
"bearer": {}
}

我希望问题会被解决。


这解决了我的问题。谢谢,伙计! - Miki

3

在将githup api令牌升级为新格式后,我遇到了同样的问题。答案是您需要升级 composer版本1.10.21 或更高版本,以解决此问题。


2
为了提供更多细节,首先从文件 ~/.composer/auth.json 中删除密钥 => "github-oauth": {}。然后,将Composer更新到最新的主要版本。例如,如果你需要版本1:composer self-update --1,然后你就可以开始了。 - Alliswell
解决方案是更改auth-method,就像这里回答的那样:https://dev59.com/gV8d5IYBdhLWcg3wkSwV#67041384 - Radon8472

3
解决方案就是使用命令composer self-update升级您的Composer版本。

今天composer self-update对我不起作用,尽管我认为它过去曾经有效,因为我看到我已经点赞了这个答案。今天https://dev59.com/qVoU5IYBdhLWcg3wI0hM#68149438帮了我。 - Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接