Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }