我使用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()方法中犯了错误?
非常感谢!
答案 0 :(得分:3)
libgit2sharp支持使用与GitHub相同的身份验证令牌。您将令牌作为用户名传递,并将密码留空。
git对简单使用HTTP Basic Auth没有任何身份验证令牌的支持,所以GitHub通过接受令牌作为用户名来实现这一点。只需像在命令行中使用它一样使用它。