/// <summary> /// 三方登录 /// </summary> /// <param name="thirdKey">三方key</param> /// <param name="thirdProvider">微博?QQ?微信?</param> /// <param name="loginDevice">登录设备 IOS?Android?</param> /// <param name="clientVersion">客户端版本</param> /// <param name="registKey">极光推送Key</param> /// <returns></returns> public async Task <OperationResult> LoginByThird(string thirdKey, ThirdProvider thirdProvider, LoginDevice loginDevice, string clientVersion, string registKey = "") { var thirdUser = SysUserLoginRepo.Entities.SingleOrDefault(m => m.ProviderKey == thirdKey && m.ThridProvider == thirdProvider); if (thirdUser == null) { var userName = "******" + DateTime.Now.ToString("yyyyMMddhhffff"); SysUser sUser = new SysUser() { UserName = userName, NickName = userName, UserType = UserType.App用户, }; UserInfoRepo.UnitOfWork.TransactionEnabled = true; await UserManager.CreateAsync(sUser); var userInfo = new UserInfo() { SysUser = sUser, IsDeleted = false, Sex = Sex.限, }; await UserInfoRepo.InsertAsync(userInfo); thirdUser = new SysUserLogin() { ProviderKey = thirdKey, ThridProvider = thirdProvider, User = sUser, }; await SysUserLoginRepo.InsertAsync(thirdUser); await UserInfoRepo.UnitOfWork.SaveChangesAsync(); } var theUser = UserInfoRepo.Entities.SingleOrDefault(m => m.SysUser.Id == thirdUser.User.Id); if (theUser.RegistKey != registKey) { theUser.RegistKey = registKey; await UserInfoRepo.UpdateAsync(theUser); } //变更登录信息 await ResetToken(theUser, loginDevice, clientVersion); var loginInfo = new UserTokenDto() { Id = theUser.Id, NickName = theUser.SysUser.NickName, HeadPic = theUser.HeadPic, Sex = theUser.Sex, Token = theUser.Token }; return(CdkxResult.Success(loginInfo)); }
public async Task <IHttpActionResult> LoginByThird(string thirdKey, ThirdProvider thirdProvider, LoginDevice loginDevice, string clientVersion, string registKey = "") { var result = await UserContract.LoginByThird(thirdKey, thirdProvider, loginDevice, clientVersion, registKey); return(Json(result.ToApiResult())); }