【发布时间】:2017-02-28 06:54:32
【问题描述】:
我可以通过 JGit 从 GitLab 进行克隆,但是当我推送更改时,我收到了 not authorized 错误消息。
三个更重要的细节:
我拥有存储库,因此只读访问不存在问题。
存储库是私有的,所以我知道 OAuth 2 令牌是有效的并且在初始克隆中使用。
我只有用户名和 oauth2 令牌。我没有用户密码、SSH 密钥或个人访问令牌。
这是我的克隆命令:
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();
【问题讨论】:
-
你使用哪种协议来克隆和推送?
-
必须为凭证提供者提供您的真实用户名(即也是 URL 一部分的用户名)。
oauth2是你的真实用户名吗? -
问题中的第 3 点表明您没有足够的权限来验证自己的身份以进行推送。
-
我正在使用 HTTP 协议。我尝试使用我的真实用户名而不是
oauth2,但这也不起作用。使用我的用户名,我什至无法首先克隆 repo。 -
@dlamblin 我不确定我是否理解...使用 GitHub 可以正常工作,GitLab 中的 oauth2 令牌有区别吗?
标签: java git gitlab jgit oauth2