3

我使用 LibGit2Sharp 库来克隆/推送经过身份验证的用户的 GitHub 存储库,但 LibGit2Sharp 不接受访问令牌来授权用户。

 LibGit2Sharp.Credentials credentials = new UsernamePasswordCredentials()
        {
            Username = "username",
            Password = "password"
        };

所以我有一个来自 Octokit.NET 的访问令牌,我想使用这个令牌通过 LibGit2Sharp 推送到授权用户存储库。

有没有办法做到这一点?如果我知道的话,Octokit.NET 此时无法执行推送请求。

更新

正如 Carlos Martín Nieto 和 Ivan Zuzak 建议的那样,我修改了代码:

 LibGit2Sharp.Credentials credentials = new UsernamePasswordCredentials()
    {
        Username = "the-access-token",
        Password = string.Empty
    };

在我使用我的推送逻辑之后:

 var pushOptions = new PushOptions() { Credentials = credentials};

 Remote remote = repo.Network.Remotes["origin"];

 LibGit2Sharp.Signature author = new LibGit2Sharp.Signature("name", "email", DateTime.Now);

 repo.Network.Push(remote,"HEAD",@"refs/heads/master",pushOptions, author, null);

此逻辑适用于硬编码的用户名和密码,但现在我在最后一行出现异常,显示“LibGit2Sharp.LibGit2SharpException: Request failed with status code: 403”

我在实现中遗漏了一些东西,或者我在 Push() 方法中犯了一个错误?

非常感谢!

4

2 回答 2

3

libgit2sharp 支持在 GitHub 上使用身份验证令牌,就像 git 一样。您将令牌作为用户名传递,并将密码留空。

git 不支持仅使用 HTTP Basic Auth 的身份验证令牌,因此 GitHub 通过接受令牌作为用户名来实现这一点。只需像在命令行上使用它一样使用它。

于 2014-07-03T16:25:27.403 回答
0

请参考以下教程生成访问令牌代码。

https://catalyst.zoho.com/help/tutorials/githubbot/generate-access-token.html

连接 github 时,请使用用户名和访问令牌代码。它可以 100% 工作。

于 2021-11-27T17:35:44.667 回答