public async Task <User> LoginAsync(string username, string password) { try { var ses = await Gitee.Api.SDK.LoginAsync(username, password); var userdetail = await ses.GetUserAsync(); var user = new Shared.User() { Detail = userdetail, Session = ses, Username = username }; return(user); } catch (WebException we) { OutputWindowHelper.ExceptionWriteLine($"LoginAsync:{we.Message}", we); throw we; } catch (Exception ex) { OutputWindowHelper.ExceptionWriteLine($"LoginAsync:{ex.Message}", ex); throw ex; } }
public void Erase() { _user = null; EraseCredential("git:https://gitee.com"); EraseCredential("access_token:https://gitee.com"); EraseCredential("refresh_token:https://gitee.com"); File.Delete(_path); }
private void SaveToken(Shared.User user) { var key = "access_token:https://gitee.com"; using (var credential = new Credential(user.Username, user.Session.Token.access_token, key)) { credential.Description = user.Session.Token.Expires.ToString("yyyy-MM-dd HH:mm:ss"); credential.Save(); } var refkey = "refresh_token:https://gitee.com"; using (var credential = new Credential(user.Username, user.Session.Token.refresh_token, refkey)) { credential.Save(); } }
private async Task LoadUserAsync() { try { Gitee.Api.SDK.client_id = Gitee.Api.SdkConfig.client_id; Gitee.Api.SDK.client_secret = Gitee.Api.SdkConfig.client_secret; var token = GetAccessToken(); _user = new User(); if (string.IsNullOrEmpty(token.access_token) || DateTime.Now > token.exp) { if (!string.IsNullOrEmpty(token.refresh_token)) { try { _user.Session = await SDK.RefreshToken(token.refresh_token); SaveToken(_user); } catch (Exception) { _user.Session = null; } } } else { _user.Session = SDK.ContinueByToken(token.refresh_token, token.access_token, token.exp); } if (_user.Session != null) { _user.Username = token.username; if (_user.Detail == null) { _user.Detail = await _user.Session.GetUserAsync(); } } } catch (Exception ex) { _user.Session = null; } try { if (_user.Session == null) { var key = "git:https://gitee.com"; using (var credential = new Credential()) { credential.Target = key; credential.Load(); _user.Username = credential.Username; _user.Session = await SDK.LoginAsync(credential.Username, credential.Password); SaveToken(_user); _user.Detail = await _user.Session.GetUserAsync(); } } } catch (Exception ex) { throw new Exception("用户登录凭证无效,请重新登陆", ex); } finally { if (_user?.Session == null || _user?.Detail == null) { _user = null; } } }
public void SaveUser(User user, string password) { SavePassword(user.Email, password); SaveToken(user); _user = user; }