如何使用个人访问令牌来使用 Libgit2sharp 身份验证

问题描述 投票:0回答:2

了解更多信息。我已经将私有存储库克隆到本地驱动器中。 更多背景信息。这是一个我试图实现的 Web 应用程序,用户可以从 git 存储库的本地克隆文件夹下载不同的文件。因此,每次有人尝试下载时,我都会尝试获取并拉取本地驱动器中的最新数据。

        var path = "my local drive path";
        using (var repo = new Repository(path))
        {
            FetchOptions options = new FetchOptions();
            options.CredentialsProvider = new CredentialsHandler((url, usernameFromUrl, types) =>
                new UsernamePasswordCredentials()
                {
                    Username="[email protected]",
                    Password = "mypassword"
                });

            foreach (Remote remote in repo.Network.Remotes)
            {
                IEnumerable<string> refSpecs = remote.FetchRefSpecs.Select(x => x.Specification);
                Commands.Fetch(repo, remote.Name, refSpecs, options, logMessage);
            }
        }
        //Console.WriteLine(logMessage);

        using (var repo = new Repository(path))
        {
            // Credential information to fetch
            LibGit2Sharp.PullOptions options = new LibGit2Sharp.PullOptions();
            options.FetchOptions = new FetchOptions();
            options.FetchOptions.CredentialsProvider = new CredentialsHandler(
                (url, usernameFromUrl, types) =>
                    new UsernamePasswordCredentials()
                    {
                        Username = "[email protected]",
                        Password = "my password"
                    });

            // User information to create a merge commit
            var signature = new LibGit2Sharp.Signature(
                new Identity("xxxx", "[email protected]"), DateTimeOffset.Now);

            // Pull
            Commands.Pull(repo, signature, options);
        }

使用我的普通用户名和密码就可以正常工作。但是当我使用我的个人访问令牌代替密码或用户名时,它会抛出错误。 有人可以帮我解决这个问题吗?

c# libgit2 libgit2sharp
2个回答
4
投票
CloneOptions co = new CloneOptions();
string gitUser = "gitUser", gitToken = "gitToken";
co.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials { Username = gitUser, Password = gitToken };

使用 github 对我有用。 只需用 git 令牌代替密码,并仍然包含用户名。 也许您需要提供对您的令牌的正确访问权限?


0
投票
CloneOptions op = new CloneOptions();
op.FetchOptions.CredentialsProvider = (_url, _user, _cred) => new UsernamePasswordCredentials
{
    Username = YourUser,
    Password = YourToken
};

这在最新版本中也有效,您无法访问“CredentialsProvider”,需要使用“FetchOptions”。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.