public async Task <bool> Login(string strOwinConfigName, string strOwinState, string strOwinCode, string strSessionName = "Mob") { if (!SessionHelper.Owin.IsValid(strOwinState)) { return(false); } OwinConfig config = GetByName(strOwinConfigName); OwinTokenDto owinTokenDto = GetTokenDto(config, strOwinCode); MemberHelper helper = new MemberHelper(); Member member = null; if (!owinTokenDto.ErrCode.HasValue) { member = helper.GetDbSet <Member>().Where(o => o.OpenId == owinTokenDto.OpenId).FirstOrDefault(); if (member != null && !string.IsNullOrEmpty(member.Password)) { SessionHelper.KeyValues[strSessionName].SetSession(member); return(true); } } OwinUserDto owinDto = GetUserDto(config, owinTokenDto); if (owinDto.ErrCode.HasValue) { LogHelper.Error(owinDto.ErrCode + ":" + owinDto.ErrMsg); return(false); } if (member == null) { member = helper.GetDbSet <Member>().Where(o => o.OpenId == owinTokenDto.OpenId).FirstOrDefault(); } if (member == null) { member = new Member { OpenId = owinDto.OpenId, }; } member.NickName = owinDto.NickName; member.Avatar = owinDto.HeadImgUrl; member.Sex = owinDto.Sex == "1" ? Sex.Male : Sex.Male; member.Password = EncryptHelper.Encrypt(SystemConfigModel.Instance.DefaultPassword); member.ShareCode = GetShareCode(); if (!(await helper.SaveAsync(member))) { return(false); } SessionHelper.KeyValues[strSessionName].SetSession(member); string strShareCode = SessionHelper.ShareCode.GetSession <string>(); if (!string.IsNullOrEmpty(strShareCode)) { await helper.SetMemberReferee(member, strShareCode); } return(true); }