private async Task <ICredential> GeneratePersonalAccessTokenAsync(Uri targetUri, ICredential credentials) { AuthenticationResult result = await _gitHubApi.CreatePersonalTokenAsync( targetUri, credentials, null, GitHubCredentialScopes); if (result.Type == GitHubAuthenticationResultType.Success) { Context.Trace.WriteLine($"Token acquisition for '{targetUri}' succeeded"); return(result.Token); } if (result.Type == GitHubAuthenticationResultType.TwoFactorApp || result.Type == GitHubAuthenticationResultType.TwoFactorSms) { bool isSms = result.Type == GitHubAuthenticationResultType.TwoFactorSms; string authCode = await _gitHubAuth.GetTwoFactorCodeAsync(targetUri, isSms); result = await _gitHubApi.CreatePersonalTokenAsync(targetUri, credentials, authCode, GitHubCredentialScopes); if (result.Type == GitHubAuthenticationResultType.Success) { Context.Trace.WriteLine($"Token acquisition for '{targetUri}' succeeded."); return(result.Token); } } throw new Exception($"Interactive logon for '{targetUri}' failed."); }
private async Task <GitCredential> GeneratePersonalAccessTokenAsync(Uri targetUri, ICredential credentials) { AuthenticationResult result = await _gitHubApi.CreatePersonalTokenAsync( targetUri, credentials, null, GitHubCredentialScopes); string token = null; if (result.Type == GitHubAuthenticationResultType.Success) { Context.Trace.WriteLine($"Token acquisition for '{targetUri}' succeeded"); token = result.Token; } else if (result.Type == GitHubAuthenticationResultType.TwoFactorApp || result.Type == GitHubAuthenticationResultType.TwoFactorSms) { bool isSms = result.Type == GitHubAuthenticationResultType.TwoFactorSms; string authCode = await _gitHubAuth.GetTwoFactorCodeAsync(targetUri, isSms); result = await _gitHubApi.CreatePersonalTokenAsync(targetUri, credentials, authCode, GitHubCredentialScopes); if (result.Type == GitHubAuthenticationResultType.Success) { Context.Trace.WriteLine($"Token acquisition for '{targetUri}' succeeded."); token = result.Token; } } if (token != null) { // Resolve the GitHub user handle GitHubUserInfo userInfo = await _gitHubApi.GetUserInfoAsync(targetUri, token); return(new GitCredential(userInfo.Login, token)); } throw new Exception($"Interactive logon for '{targetUri}' failed."); }