如何使用Octokit通过GitHub令牌正确获取当前登录用户名?
问题根因
你当前的代码拿不到正确用户名的核心原因是:Octokit.NET库所有发起网络请求的方法都是异步实现的,gitHubClient.User.Current()返回值是Task<User>类型的异步任务对象,你没有等待任务执行完成就直接打印,最终输出的是任务对象的类型信息,不是实际的用户数据。
修正步骤
- 将控制台程序的入口方法改为异步签名,支持异步等待语法
- 调用接口时添加
await关键字,等待接口请求完成拿到实际的用户实体 - 从返回的用户实体中读取
Login属性,即为令牌对应的登录用户名 - 补充基础的输入校验,避免空token引发运行时异常
修正后完整代码
// 异步程序入口 async Task Main() { Console.WriteLine("Input your token: "); string? inputToken = Console.ReadLine()?.Trim(); if (string.IsNullOrEmpty(inputToken)) { Console.WriteLine("Error: Token cannot be empty"); return; } var gitHubClient = new GitHubClient(new ProductHeaderValue("MyCoolFilesManager")); gitHubClient.Credentials = new Credentials(inputToken); // 等待异步请求返回用户信息 var currentUser = await gitHubClient.User.Current(); // 输出登录用户名 Console.WriteLine($"Current login: {currentUser.Login}"); }
额外说明
- 你使用的GitHub个人访问令牌需要开启
read:user权限,否则请求会返回403权限不足错误 - 令牌不要硬编码在代码中,也不要提交到代码仓库,避免凭证泄露
- 如果使用细粒度令牌,需要给用户信息配置对应的只读权限即可,不要授予多余权限
内容的提问来源于stack exchange,提问作者danperunov
相关产品推荐
相关产品推荐

