我正在编写一个应用程序,允许用户直接访问保存在GitHub上的文件,而无需离开软件Revit(3D建模软件)。
我正在使用Octokit以便能够在我的C#应用程序中使用GitHub的功能。
我创建了一个WPF窗口,该窗口弹出并要求用户进行身份验证。在该应用程序的第一个版本中,我通过用户名,GitHub令牌(https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)和存储库名称登录用户。
在这个新版本中,我想对登录进行一些改进,使用户能够通过其GitHub凭据(电子邮件和密码)登录,从而改善体验。
我能够成功登录用户:
readonly GitHubClient client = new GitHubClient(new ProductHeaderValue("DynaHub"));
client.Credentials = new Credentials("myaddress@email.com", "myPassword");
但是然后在尝试为用户获取所有存储库时出现了问题。
我正在使用这种方法:
var repos = await client.Repository.GetAllForUser(string login);
,但是如果您使用登录电子邮件,则它不起作用。仅当我使用用户的用户名并且实际上找到了我所有的公共存储库时,它才起作用。
这本身有点奇怪,因为Credentials(string login)
方法和GetAllForUser(string login)
方法都要求输入string login
,因此您希望使用刚刚用作凭证的电子邮件登录也可以获取回购协议。
如果不是这种情况,如何从电子邮件中获取用户名?当然一定有办法。 (尝试在某处建议使用var users = await client.Search.SearchUsers(new SearchUsersRequest("asd@asd.com"));
,但找不到任何用户,因此没有成功。)