use*_*808 5 java git oauth-2.0 jgit gitlab
我可以通过 JGit 从 GitLab 克隆,但是当我去推送更改时,我收到一条not authorized错误消息。
三个更重要的细节:
我拥有该存储库,因此只读访问不存在问题。
该存储库是私有的,因此我知道 OAuth 2 令牌是有效的并且正在初始克隆中使用。
我只有用户名和 oauth2 令牌。我没有用户的密码、SSH 密钥或个人访问令牌。
这是我的克隆命令:
Git.cloneRepository()
.setURI(target)
.setDirectory(repoFolder)
.setCloneAllBranches(true)
.setCredentialsProvider(new UsernamePasswordCredentialsProvider("oauth2", token))
.call();
Run Code Online (Sandbox Code Playgroud)
这是我的推送命令:
PushCommand push = cloneSource.push();
push.setRemote(target);
push.setPushAll();
push.setCredentialsProvider(new UsernamePasswordCredentialsProvider("oauth2", token));
push.call();
Run Code Online (Sandbox Code Playgroud)
小智 6
要使用个人访问令牌和 jgit 验证 gitlab,您可以使用以下代码片段:
通过下面的代码片段,我能够推送回 GitLab 存储库。
CredentialsProvider credentialsProvider = new
UsernamePasswordCredentialsProvider( "PRIVATE-TOKEN", <your oauth token> );
git.push()
.setCredentialsProvider( credentialsProvider )
.call();
Run Code Online (Sandbox Code Playgroud)
这适用于 Jgit 版本 (4.8.0.201706111038-r)
通过下面的代码片段,我能够从 GitLab 存储库克隆并推送回该存储库。
CredentialsProvider credentialsProvider
= new UsernamePasswordCredentialsProvider( "myname", "password" );
Git git = Git.cloneRepository()
.setURI( "https://gitlab.com/myname/repo.git" )
.setDirectory( tempFolder.newFolder() )
.setCredentialsProvider( credentialsProvider )
.call();
File file = new File( git.getRepository().getWorkTree(), "file" + new Object().hashCode() );
file.createNewFile();
git.add().addFilepattern( file.getName() ).call();
git.commit().setMessage( "Add file " + file.getName() ).call();
git.push()
.setCredentialsProvider( credentialsProvider )
.call();
Run Code Online (Sandbox Code Playgroud)
如果您使用 GitLab 的个人访问令牌,则需要将访问令牌编码到 URL 中并将其作为密码提供,如下所示:
CredentialsProvider credentialsProvider
= new UsernamePasswordCredentialsProvider( "myname", "<token>" );
command.setURI( "https://gitlab-ci-token:<token>@gitlab.com/myname/repo.git" )
command.setCredentialsProvider( credentialsProvider )
Run Code Online (Sandbox Code Playgroud)
也许这将有助于找到“未经授权”错误的根源。为了通过 SSH 进行通信,您需要将 SSH 密钥添加到您的 GitLab 配置文件中。
| 归档时间: |
|
| 查看次数: |
3916 次 |
| 最近记录: |