java - 使用 JGit 授权错误推送到 GitLab

标签 java git gitlab jgit oauth-2.0

我可以通过 JGit 从 GitLab 克隆,但是当我推送更改时,我收到了 not authorized 错误消息。

三个更重要的细节:

  1. 我拥有存储库,因此这不是只读访问的问题。

  2. 存储库是私有(private)的,因此我知道 OAuth 2 token 有效并在初始克隆中使用。

  3. 我只有用户名和一个 oauth2 token 。我没有用户密码、SSH key 或个人访问 token 。

这是我的克隆命令:

Git.cloneRepository()
  .setURI(target)
  .setDirectory(repoFolder)
  .setCloneAllBranches(true)
  .setCredentialsProvider(new UsernamePasswordCredentialsProvider("oauth2", token))
  .call();

这是我的推送命令:

PushCommand push = cloneSource.push();
  push.setRemote(target);
  push.setPushAll();
  push.setCredentialsProvider(new UsernamePasswordCredentialsProvider("oauth2", token));
  push.call();

最佳答案

要使用个人访问 token 和 jgit 对 gitlab 进行身份验证,您可以使用以下代码段:

通过下面的代码片段,我能够推送回 GitLab 存储库。

CredentialsProvider credentialsProvider = new 
     UsernamePasswordCredentialsProvider( "PRIVATE-TOKEN", <your oauth token> );
git.push()
     .setCredentialsProvider( credentialsProvider )
     .call();

这适用于 Jgit 版本 (4.8.0.201706111038-r)

关于java - 使用 JGit 授权错误推送到 GitLab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40117738/

相关文章:

git - 无法通过 HTTP 使用 Git 进行克隆

node.js - 尝试让 Gitlab CI 运行 NPM 和 Gulp 时出错

python - 如何使用 Gitlab CI 提高基于 python 的无服务器框架项目的部署速度

docker - DinD gitlab-runner:警告服务Runner-xxx-project-xx-concurrent-x-docker-x可能无法正常启动

Java Validator 在失败时锁定文件——我做错了什么?

java - 更好地组织 Txt 文件中的 ArrayList

java - 关于 Java 和 Scala 以及并行化的问题

java - 在java中将字符串转换为BigDecimal

php - webhook php 文件从终端工作但不是从 bitbucket

git - 在 CentO 上安装 Git