public async Task <UserView> OauthFromGit(GitSignInPara data) { Dictionary <string, string> postData = new Dictionary <string, string>(); postData.Add("code", data.Code); postData.Add("client_secret", data.Client_secret); postData.Add("client_id", data.Client_id); string token = await HttpUtil.HttpPostAsync("https://github.com/login/oauth/access_token", postData, Encoding.UTF8); string pattern = @"(?<=access_token=)\w*"; token = Regex.Match(token, pattern).Value; string userStr = await HttpUtil.HttpGetAsync("https://api.github.com/user?access_token=" + token, Encoding.UTF8); GitUser gitUser = JsonConvert.DeserializeObject <GitUser>(userStr); if (gitUser.Login == null) { return new UserView { NickName = "Token过期" } } ; int userId = CreateUser(gitUser); //插入Cookie await InserCookie(gitUser, userId); UserView userView = _mapper.Map <UserView>(gitUser); return(userView); }
public async Task <UserView> SigninByGit(GitSignInPara data) { UserView user = new UserView(); if (User.Identity.IsAuthenticated) { string accountSource = CookieUtil.GetCookie(AccountSource.LoginSource, User); if (accountSource == AccountSource.Git) { //直接返回cookie中的结果,并建立session user = SignInService.GetGitUser(); } } else { //没有授权 先获取授权,插入自己的库,再加cookie user = await SignInService.OauthFromGit(data); } return(user); }