使用Octokit.net进行身份验证,并将LibGit2Sharp推送到GitHub存储库

时间:2014-07-03 10:26:37

标签: git github github-api libgit2sharp octokit.net

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

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

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

有没有办法做这个伎俩?如果我知道的话,Octokit.NET目前无法执行推送请求。

更新

正如CarlosMartínNieto和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:请求失败,状态码为:403”

我错过了实现中的某些内容,或者我在Push()方法中犯了错误?

非常感谢!

1 个答案:

答案 0 :(得分:3)

libgit2sharp支持使用与GitHub相同的身份验证令牌。您将令牌作为用户名传递,并将密码留空。

git对简单使用HTTP Basic Auth没有任何身份验证令牌的支持,所以GitHub通过接受令牌作为用户名来实现这一点。只需像在命令行中使用它一样使用它。