当前位置: 首页 > 知识库问答 >
问题:

401未经授权使用Gradle从GitHub包下载公共包

华俊弼
2023-03-14

我是公共GitHub回购协议的维护者。我已经设置了GitHub操作来构建发布到GitHub包。您可以在此处看到已创建的包:

https://github.com/paulschwarz/spring-dotenv/packages/135114

我注意到的第一件事是GitHub只提供了一个Maven安装片段。我使用这段代码将依赖项添加到另一个项目中,它似乎可以工作。

现在我想把这个包导入一个Gradle项目。我补充说

dependencies {
  implementation ('me.paulschwarz:spring-dotenv:0.0.3')
}

格雷德尔告诉我

Could not find me.paulschwarz:spring-dotenv:0.0.3.
     Searched in the following locations:
       - https://jcenter.bintray.com/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom
       - https://repo.maven.apache.org/maven2/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom

这已经很奇怪了,因为我的Maven项目在解决依赖关系方面似乎没有问题。我必须说我很好奇这是怎么回事?GitHub包肯定没有与JCenter或Maven Central集成吗?

无论如何,下一步,添加存储库

repositories {
    jcenter()
    mavenCentral()
    maven { url = uri('https://maven.pkg.github.com/paulschwarz/spring-dotenv') }
}

此时,Gradle应该知道在哪里可以找到包。然而,我明白了

      > Could not resolve me.paulschwarz:spring-dotenv:0.0.3.
         > Could not get resource 'https://maven.pkg.github.com/paulschwarz/spring-dotenv/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom'.
            > Could not GET 'https://maven.pkg.github.com/paulschwarz/spring-dotenv/me/paulschwarz/spring-dotenv/0.0.3/spring-dotenv-0.0.3.pom'. Received status code 401 from server: Unauthorized

这是真的吗?或者是URL错误,并且它正在尝试访问授权的endpoint?

如果是真的,为什么?这是一个带有公共包的公共回购。我可以直接从GitHub页面匿名下载包。我在格拉德尔做错了什么?

共有3个答案

孟征
2023-03-14

就我而言,我在使用马文。经过研究,最终我需要生成一个GitHub令牌,而不是使用普通的GitHub用户登录密码1。

章乐逸
2023-03-14

如上所述,您需要对GitHub包进行身份验证。

ext {
  GITHUB_TOKEN = System.getenv("GITHUB_TOKEN")
}

maven {
  url "https://maven.pkg.github.com/paulschwarz/spring-dotenv"
  credentials {
    username GITHUB_USER
    password GITHUB_TOKEN
  }
}

其中GITHUB_USER是在gradle中定义的。属性和GITHUB_标记被定义为环境变量。GITHUB_令牌作为${{secrets.GITHUB_令牌}在GITHUB操作工作流文件中可用

在本地运行时,您必须自己定义它。

呼延晋
2023-03-14

正如你所观察到的,GitHub现在不支持未经授权的包访问(但计划在未来),正如他们的一名员工(5月27日'20日)所解释的:

我们的Maven服务现在不允许未经授权的访问。我们计划在将来提供这项服务,但需要在这之前稍微改进服务。

对于操作,您可以将PAT添加到机密存储或使用GITHUB_令牌进行身份验证。在您的设置中。xml我们建议使用环境变量方法(请参见设置java 4),这样您就不会将令牌存储在文件中。

 类似资料:
  • 我的代码:GoogleCredential凭据 credential.refreshToken() 错误日志: 创建服务号的步骤: 我在凭据中的oauth 2.0中创建了一个Web应用程序 然后我用客户端ID创建了一个服务号 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象 一旦刷新令牌,我就给了我401例外。 在这种情况下,任何帮助都会受到感激

  • 我想使用爪哇谷歌驱动器API。我尝试了这段代码: 但是我得到了这个错误: 我使用以下配置: 你能告诉我怎么解决这个问题吗?

  • null null 使用NodePort服务公开Keycloak。 应用程序使用istio入口网关公开。 Keycloak服务器版本:9.0.0。

  • 我正在尝试登录基于cloudflare服务器的网站。我使用cloudserver绕过了登录问题,但我的下一个停止点是当我试图发送get请求以访问一些登录后令牌时。 我的代码: 这返回401作为答案: 它的标题是 好的,我首先试着给一个auth。这样地 我再次得到相同的错误,401,但这次响应的头确实有一个www身份验证,我应该质询 根据我所读到的内容,它是基本的意味着我必须在我的头文件中添加一个像

  • 我正在使用Maven Jib插件将我的应用程序部署到Gitlab docker注册表。如果我使用并输入用户名和密码,我可以成功登录gitlab注册表。我可以看到

  • 我尝试通过https://api.twitter.com/oauth/request_token请求令牌,但总是得到401错误。 我通过curl进行测试(很容易看到发生了什么)。 curl--请求“POST”https://api.twitter.com/oauth/request_token“--标头”授权:OAuth OAuth\u回调=”http://www.domain.tld/blank