/// <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()));
        }