コード例 #1
0
        static void Main(string[] args)
        {
            Taobao taobao = new Taobao();

            taobao.username = username;
            taobao.password = pwd;

            while (true)
            {
                try
                {
                    var s      = taobao.GetLoginedPage("https://cart.taobao.com/cart.htm?spm=a1z09.2.a2109.d1000367.64122e8dvPxJdg&nekot=1470211439694");
                    var result = s.IndexOf("日本包车九州到东京");
                    if (result > 0)
                    {
                        Log.Write(DateTime.Now + "    获取成功");
                    }
                    else
                    {
                        Log.Write(DateTime.Now + "      获取失败");
                        taobao.Login();
                    }
                }
                catch (Exception ex)
                {
                    Log.Write(DateTime.Now + " 处理出错:" + ex.Message);
                }

                Thread.Sleep(1000);
            }
        }
コード例 #2
0
 public ProcessController(ITFlowEngine managementApi
     , Taobao.Workflow.Activities.Client.ITFlowEngine clientApi
     , string MiddleWebWhiteList)
 {
     this._managementApi = managementApi;
     this._clientApi = clientApi;
     this._MiddleWebWhiteList = MiddleWebWhiteList;
 }
コード例 #3
0
ファイル: EventBus.cs プロジェクト: jatinbhole/NTFE-BPM
 public void RaiseWorkItemArrived(Taobao.Workflow.Activities.Hosting.WorkItemArgs args)
 {
     //this._sender.SendArgs("OnTaskArrived", new
     //{
     //    State = _state,
     //    Actioner = args.WorkItem.Actioner.UserName,
     //    FlowId = args.WorkItem.Process.ID.ToString(),
     //    TaskId = args.WorkItem.ID.ToString()
     //}, args.WorkItem.Actioner.UserName);//传递标识作为负载依据
 }
コード例 #4
0
ファイル: CouponController.cs プロジェクト: bsed/Buy
        public ActionResult GetPwd(int id, string userID, string cUserID)
        {
            userID = UserID == null ? userID : UserID;
            string couponUserID;

            if (string.IsNullOrWhiteSpace(cUserID))//如果有分享的用户ID不验证
            {
                if (string.IsNullOrWhiteSpace(userID))
                {
                    return(Json(Comm.ToJsonResult("NotLogin", "用户没有登录"), JsonRequestBehavior.AllowGet));
                }
                var user = db.Users.FirstOrDefault(s => s.Id == userID);
                if (!user.IsActive)
                {
                    return(Json(Comm.ToJsonResult("NotActive", "用户没有激活"), JsonRequestBehavior.AllowGet));
                }
                couponUserID = Bll.Accounts.GetCouponUserID(userID);
                if (couponUserID == null)
                {
                    return(Json(Comm.ToJsonResult("NotReceive", "当前用户没法领取"), JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                couponUserID = cUserID;
            }
            CouponUser cu = db.CouponUsers.Include(s => s.Coupon).FirstOrDefault(s => s.CouponID == id && s.UserID == couponUserID);

            if (cu == null)
            {
                return(Json(Comm.ToJsonResult("Error", "优惠券不存在"), JsonRequestBehavior.AllowGet));
            }
            string pwd = "";

            switch (cu.Platform)
            {
            case Enums.CouponPlatform.TaoBao:
            case Enums.CouponPlatform.TMall:
            {
                pwd = new Taobao().GetWirelessShareTpwd(cu.Coupon.Image, cu.Link, cu.Coupon.Name, 0);
            }
            break;

            case Enums.CouponPlatform.Jd:
            case Enums.CouponPlatform.MoGuJie:
            default:
            {
                pwd = cu.Link;
            }
            break;
            }
            return(Json(Comm.ToJsonResult("Success", "成功", new { Data = pwd }), JsonRequestBehavior.AllowGet));
        }
コード例 #5
0
        public ActionResult Auth()
        {
            string url   = string.Empty;
            string vtype = RouteData.Values["id"]?.ToString().ToLower();

            switch (vtype)
            {
            case "qq":
                url = QQ.AuthorizationHref(new QQ_Authorization_RequestEntity());
                break;

            case "weibo":
                url = Weibo.AuthorizeHref(new Weibo_Authorize_RequestEntity());
                break;

            case "github":
                url = GitHub.AuthorizeHref(new GitHub_Authorize_RequestEntity());
                break;

            case "taobao":
                url = Taobao.AuthorizeHref(new Taobao_Authorize_RequestEntity());
                break;

            case "microsoft":
                url = MicroSoft.AuthorizeHref(new MicroSoft_Authorize_RequestEntity());
                break;
            }
            if (string.IsNullOrWhiteSpace(url))
            {
                url = "/account/login";
            }

            //已登录 && 从绑定页面点击
            if (HttpContext.User.Identity.IsAuthenticated && Request.Headers["Referer"].ToString().ToLower().Contains("authbind"))
            {
                //写入绑定标识cookie
                var hc = new HttpCookie("AccountBindOAuth", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))
                {
                    Expires = DateTime.Now.AddMinutes(2)
                };
                Response.Cookies.Add(hc);
            }
            else
            {
                //删除绑定标识
                Response.Cookies.Remove("AccountBindOAuth");
            }
            return(Redirect(url));
        }
コード例 #6
0
ファイル: CanMou_KeysHelper.cs プロジェクト: ourstoryzj/mumu
        public CanMou_KeysHelper()
        {
            Login_TaoBao tb = new Login_TaoBao();

            tb.Show();
            if (Taobao.WaitTaoBaoLogin(tb))
            {
                tb.Hide();
                InitializeComponent();
                this.StartPosition = FormStartPosition.CenterScreen;
                Browser.GetWebBrowser(tb.webBrowser1, webBrowser1);
                tb.Close();
                tb.Dispose();
            }
        }
コード例 #7
0
 private Converters.ProcessType Parse(Taobao.Workflow.Activities.ProcessType processType)
 {
     var activity = this._workflowParser.Parse(WorkflowBuilder.GetCacheKey(processType)
         , processType.Workflow.Serialized
         , processType.ActivitySettings);
     return new Converters.ProcessType()
     {
         CreateTime = processType.CreateTime,
         Description = processType.Description,
         Name = processType.Name,
         Version = processType.Version,
         IsCurrent = processType.IsCurrent,
         Group = processType.Group,
         ActivityNames = processType.ActivitySettings.Select(o => o.ActivityName).ToArray(),
         DataFields = activity.Variables.Select(o => o.Name).ToArray()
     };
 }
コード例 #8
0
        public IActionResult Auth()
        {
            string url = string.Empty;

            if (Enum.TryParse(RouteData.Values["id"]?.ToString().ToLower(), out ValidateloginType vtype))
            {
                switch (vtype)
                {
                case ValidateloginType.qq:
                    url = QQ.AuthorizationHref(new QQ_Authorization_RequestEntity());
                    break;

                case ValidateloginType.weibo:
                    url = Weibo.AuthorizeHref(new Weibo_Authorize_RequestEntity());
                    break;

                case ValidateloginType.github:
                    url = GitHub.AuthorizeHref(new GitHub_Authorize_RequestEntity());
                    break;

                case ValidateloginType.taobao:
                    url = Taobao.AuthorizeHref(new Taobao_Authorize_RequestEntity());
                    break;

                case ValidateloginType.microsoft:
                    url = MicroSoft.AuthorizeHref(new MicroSoft_Authorize_RequestEntity());
                    break;
                }
            }

            if (string.IsNullOrWhiteSpace(url))
            {
                url = "/account/login";
            }

            //未登录
            if (!User.Identity.IsAuthenticated)
            {
                //删除绑定标识
                Response.Cookies.Delete("AccountBindOAuth");
            }
            return(Redirect(url));
        }
コード例 #9
0
ファイル: demo.cs プロジェクト: realzhaorong/Netnr.Login
        /// <summary>
        /// 生成请求链接
        /// </summary>
        /// <returns></returns>
        public string Auth(LoginBase.LoginType loginType)
        {
            var url = string.Empty;

            switch (loginType)
            {
            case LoginBase.LoginType.QQ:
                url = QQ.AuthorizationHref(new QQ_Authorization_RequestEntity());
                break;

            case LoginBase.LoginType.WeiBo:
                url = Weibo.AuthorizeHref(new Weibo_Authorize_RequestEntity());
                break;

            case LoginBase.LoginType.WeChat:
                url = WeChat.AuthorizationHref(new WeChat_Authorization_RequestEntity());
                break;

            case LoginBase.LoginType.GitHub:
                url = GitHub.AuthorizeHref(new GitHub_Authorize_RequestEntity());
                break;

            case LoginBase.LoginType.TaoBao:
                url = Taobao.AuthorizeHref(new Taobao_Authorize_RequestEntity());
                break;

            case LoginBase.LoginType.MicroSoft:
                url = MicroSoft.AuthorizeHref(new MicroSoft_Authorize_RequestEntity());
                break;

            default:
                break;
            }

            return(url);
        }
コード例 #10
0
ファイル: TaobaoController.cs プロジェクト: bsed/Buy
        public ActionResult Import(string userID, string url)
        {
            if (string.IsNullOrWhiteSpace(userID))
            {
                return(Json(Comm.ToJsonResult("Error", "失败")));
            }
            string path = Request.MapPath(url);

            Taobao.Import(userID, path);
            try
            {
                var fileInfo = new FileInfo(path);
                if (fileInfo.Exists)
                {
                    fileInfo.Delete();
                }
            }
            catch (Exception ex)
            {
                Comm.WriteLog("TaoBaoImort", $"删除缓存失败:{ex.Message}", Enums.DebugLogLevel.Error, Url.Action(), ex);
            }

            return(Json(Comm.ToJsonResult("Success", "成功")));
        }
コード例 #11
0
        public ActionResult AuthCallback(string code)
        {
            var    result = new AccountValidationVM();
            string vtype  = RouteData.Values["id"]?.ToString().ToLower();

            try
            {
                //唯一标示
                string openId = string.Empty;
                try
                {
                    switch (vtype)
                    {
                    case "qq":
                    {
                        //获取 access_token
                        var accessToken_ResultEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                            {
                                code = code
                            });

                        //获取 OpendId
                        var openId_ResultEntity = QQ.OpenId(new QQ_OpenId_RequestEntity()
                            {
                                access_token = accessToken_ResultEntity.access_token
                            });

                        //获取 UserInfo
                        var openId_Get_User_Info_ResultEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity()
                            {
                                access_token = accessToken_ResultEntity.access_token,
                                openid       = openId_ResultEntity.openid
                            });

                        //身份唯一标识
                        openId = openId_ResultEntity.openid;
                    }
                    break;

                    case "weibo":
                    {
                        //获取 access_token
                        var accessToken_ResultEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity()
                            {
                                code = code
                            });

                        //获取 access_token 的授权信息
                        var tokenInfo_ResultEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity()
                            {
                                access_token = accessToken_ResultEntity.access_token
                            });

                        //获取 users/show
                        var userShow_ResultEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity()
                            {
                                access_token = accessToken_ResultEntity.access_token,
                                uid          = Convert.ToInt64(tokenInfo_ResultEntity.uid)
                            });

                        openId = accessToken_ResultEntity.access_token;
                    }
                    break;

                    case "github":
                    {
                        //获取 access_token
                        var accessToken_ResultEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                            {
                                code = code
                            });

                        //获取 user
                        var user_ResultEntity = GitHub.User(new GitHub_User_RequestEntity()
                            {
                                access_token = accessToken_ResultEntity.access_token
                            });

                        openId = user_ResultEntity.id.ToString();
                    }
                    break;

                    case "taobao":
                    {
                        //获取 access_token
                        var accessToken_ResultEntity = Taobao.AccessToken(new Taobao_AccessToken_RequestEntity()
                            {
                                code = code
                            });

                        openId = accessToken_ResultEntity.open_uid;
                    }
                    break;

                    case "microsoft":
                    {
                        //获取 access_token
                        var accessToken_ResultEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity()
                            {
                                code = code
                            });

                        //获取 user
                        var user_ResultEntity = MicroSoft.User(new MicroSoft_User_RequestEntity()
                            {
                                access_token = accessToken_ResultEntity.access_token
                            });

                        openId = user_ResultEntity.id.ToString();
                    }
                    break;
                    }
                }
                catch (Exception ex)
                {
                    result.message = ex.Message;
                }

                if (string.IsNullOrWhiteSpace(openId))
                {
                    result.message = "身份验证失败";
                }
                else
                {
                    //判断是绑定操作
                    bool isbind = false;
                    if (User.Identity.IsAuthenticated)
                    {
                        var aboa = Request.Cookies["AccountBindOAuth"]?.Value;
                        if (!string.IsNullOrWhiteSpace(aboa) && (DateTime.Now - DateTime.Parse(aboa)).TotalSeconds < 120)
                        {
                            string uid = Func.Common.GetLoginUserInfo().UserId;

                            using (var db = new ContextBase())
                            {
                                var sysauth = db.SysAuthorize.Where(x => x.SuId == uid).FirstOrDefault();
                                var isadd   = sysauth == null;
                                //新增
                                if (isadd)
                                {
                                    sysauth = new SysAuthorize()
                                    {
                                        SaId = Guid.NewGuid().ToString(),
                                        SuId = uid
                                    };
                                }

                                switch (vtype)
                                {
                                case "qq":
                                    sysauth.OpenId1 = openId;
                                    break;

                                case "weibo":
                                    sysauth.OpenId2 = openId;
                                    break;

                                case "github":
                                    sysauth.OpenId3 = openId;
                                    break;

                                case "taobao":
                                    sysauth.OpenId4 = openId;
                                    break;

                                case "microsoft":
                                    sysauth.OpenId5 = openId;
                                    break;
                                }
                                if (isadd)
                                {
                                    db.SysAuthorize.Add(sysauth);
                                }
                                else
                                {
                                    db.SysAuthorize.Update(sysauth, db);
                                }
                                db.SaveChanges();
                            }

                            Response.Cookies.Remove("AccountBindOAuth");
                            isbind = true;

                            result.code    = 301;
                            result.message = "绑定成功";
                            result.url     = "/";
                        }
                    }

                    //非绑定操作
                    if (!isbind)
                    {
                        using (var db = new ContextBase())
                        {
                            SysUser vmo = null;
                            switch (vtype)
                            {
                            case "qq":
                                vmo = (from a in db.SysAuthorize
                                       join b in db.SysUser on a.SuId equals b.SuId
                                       where a.OpenId1 == openId
                                       select b).FirstOrDefault();
                                break;

                            case "weibo":
                                vmo = (from a in db.SysAuthorize
                                       join b in db.SysUser on a.SuId equals b.SuId
                                       where a.OpenId2 == openId
                                       select b).FirstOrDefault();
                                break;

                            case "github":
                                vmo = (from a in db.SysAuthorize
                                       join b in db.SysUser on a.SuId equals b.SuId
                                       where a.OpenId3 == openId
                                       select b).FirstOrDefault();
                                break;

                            case "taobao":
                                vmo = (from a in db.SysAuthorize
                                       join b in db.SysUser on a.SuId equals b.SuId
                                       where a.OpenId4 == openId
                                       select b).FirstOrDefault();
                                break;

                            case "microsoft":
                                vmo = (from a in db.SysAuthorize
                                       join b in db.SysUser on a.SuId equals b.SuId
                                       where a.OpenId5 == openId
                                       select b).FirstOrDefault();
                                break;
                            }

                            //没关联
                            if (vmo == null)
                            {
                                result.code    = 302;
                                result.message = "未关联账号,先账号密码登录再关联才能使用";
                            }
                            else
                            {
                                result = LoginValidation(vmo, "_pass_", 1);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.message = ex.Message;
            }

            //成功
            if (result.code == 100)
            {
                return(Redirect(result.url));
            }
            else
            {
                return(View(result));
            }
        }
コード例 #12
0
ファイル: IThirdPartyTicketExcel.cs プロジェクト: bsed/Buy
        public void Set(string path)
        {
            var models = new List <CouponUserViewModel>();

            try
            {
                var dtable = new ExcelHelper(path).ExcelToDataTable(null, true);

                foreach (System.Data.DataRow item in dtable.Rows)
                {
                    var index = dtable.Rows.IndexOf(item);
                    try
                    {
                        var model = new CouponUserViewModel
                        {
                            EndDateTime    = Convert.ToDateTime(item["优惠券结束时间"]).AddDays(1).AddSeconds(-1),
                            ProductID      = item["商品id"].ToString(),
                            TypeID         = Bll.Coupons.CheckType(item["商品一级类目"].ToString()),
                            Image          = item["商品主图"].ToString(),
                            Link           = item["商品优惠券推广链接"].ToString(),
                            Name           = item["商品名称"].ToString(),
                            OriginalPrice  = Convert.ToDecimal(item["商品价格(单位:元)"]),
                            ProductType    = item["商品一级类目"].ToString(),
                            ShopName       = item["店铺名称"].ToString(),
                            StartDateTime  = Convert.ToDateTime(item["优惠券开始时间"].ToString()),
                            Subtitle       = null,
                            Value          = item["优惠券面额"].ToString(),
                            Platform       = item["平台类型"].ToString() == "淘宝" ? Enums.CouponPlatform.TaoBao : Enums.CouponPlatform.TMall,
                            Sales          = Convert.ToInt32(item["商品月销量"]),
                            Commission     = Convert.ToDecimal(item["佣金"]),
                            CommissionRate = Convert.ToDecimal(item["收入比率(%)"]),
                            Left           = Convert.ToInt32(item["优惠券剩余量"]),
                            Total          = Convert.ToInt32(item["优惠券总量"])
                        };
                        try
                        {
                            model.Price = Taobao.GetAfterCouponPrice(model.OriginalPrice, model.Value);
                        }
                        catch (Exception)
                        {
                            continue;
                        }
                        if (model.EndDateTime < DateTime.Now || model.OriginalPrice <= model.Price)
                        {
                            continue;
                        }
                        if (model.Price < 0)
                        {
                            continue;
                        }
                        models.Add(model);
                    }
                    catch (Exception ex)//有异常的数据忽略
                    {
                    }
                }
                //分段添加到数据库
                Bll.Coupons.DbAdd(models);
            }
            catch (Exception ex)
            {
                //Comm.WriteLog("excel", $"{ex.Message}", Enums.DebugLogLevel.Error);
            }
        }
コード例 #13
0
ファイル: WF4Converter.cs プロジェクト: jatinbhole/NTFE-BPM
 //初始化元数据
 private void CacheMetadata(Taobao.Activities.Statements.Flowchart flowchart)
 {
     var methodInfo = flowchart.GetType().GetMethod("CacheMetadata", BindingFlags.Instance
         | BindingFlags.NonPublic
         | BindingFlags.DeclaredOnly);
     methodInfo.Invoke(flowchart, null);
 }
コード例 #14
0
ファイル: demo.cs プロジェクト: realzhaorong/Netnr.Login
        /// <summary>
        /// 回调方法
        /// </summary>
        /// <param name="code">请求链接得到的code</param>
        /// <param name="loginType">登录类型</param>
        public void AuthCallback(string code, LoginBase.LoginType loginType)
        {
            if (string.IsNullOrWhiteSpace(code))
            {
                //打开链接没登录授权
            }
            else
            {
                //唯一标示
                string openId = string.Empty;

                switch (loginType)
                {
                case LoginBase.LoginType.QQ:
                {
                    //获取 access_token
                    var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 OpendId
                    var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity()
                        {
                            access_token = tokenEntity.access_token
                        });

                    //获取 UserInfo
                    var userEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity()
                        {
                            access_token = tokenEntity.access_token,
                            openid       = openidEntity.openid
                        });

                    //身份唯一标识
                    openId = openidEntity.openid;
                }
                break;

                case LoginBase.LoginType.WeiBo:
                {
                    //获取 access_token
                    var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 access_token 的授权信息
                    var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity()
                        {
                            access_token = tokenEntity.access_token
                        });

                    //获取 users/show
                    var userEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity()
                        {
                            access_token = tokenEntity.access_token,
                            uid          = Convert.ToInt64(tokenInfoEntity.uid)
                        });

                    openId = tokenEntity.access_token;
                }
                break;

                case LoginBase.LoginType.WeChat:
                {
                    //获取 access_token
                    var tokenEntity = WeChat.AccessToken(new WeChat_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 user
                    var userEntity = WeChat.Get_User_Info(new WeChat_OpenAPI_RequestEntity()
                        {
                            access_token = tokenEntity.access_token,
                            openid       = tokenEntity.openid
                        });

                    //身份唯一标识
                    openId = tokenEntity.openid;
                }
                break;

                case LoginBase.LoginType.GitHub:
                {
                    //申请的应用名称,非常重要
                    GitHubConfig.ApplicationName = "netnrf";

                    //获取 access_token
                    var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 user
                    var userEntity = GitHub.User(new GitHub_User_RequestEntity()
                        {
                            access_token = tokenEntity.access_token
                        });

                    openId = userEntity.id.ToString();
                }
                break;

                case LoginBase.LoginType.TaoBao:
                {
                    //获取 access_token
                    var tokenEntity = Taobao.AccessToken(new Taobao_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    openId = tokenEntity.open_uid;
                }
                break;

                case LoginBase.LoginType.MicroSoft:
                {
                    //获取 access_token
                    var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity()
                        {
                            code = code
                        });

                    //获取 user
                    var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity()
                        {
                            access_token = tokenEntity.access_token
                        });

                    openId = userEntity.id.ToString();
                }
                break;
                }

                //拿到登录标识
                if (string.IsNullOrWhiteSpace(openId))
                {
                    //TO DO
                }
            }
        }
コード例 #15
0
        public IActionResult AuthCallback(string code)
        {
            var vm = new ActionResultVM();

            if (string.IsNullOrWhiteSpace(code))
            {
                vm.msg = "未授权,登录失败";
            }
            else
            {
                try
                {
                    //唯一标示
                    string openId = string.Empty;
                    //注册信息
                    var mo = new Domain.UserInfo()
                    {
                        LoginLimit     = 0,
                        UserSex        = 0,
                        UserCreateTime = DateTime.Now
                    };
                    //头像
                    string avatar = string.Empty;
                    //头像(高清)
                    string avatarhd = string.Empty;

                    if (Enum.TryParse(RouteData.Values["id"]?.ToString().ToLower(), out ValidateloginType vtype))
                    {
                        try
                        {
                            switch (vtype)
                            {
                            case ValidateloginType.qq:
                            {
                                //获取 access_token
                                var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                                    {
                                        code = code
                                    });

                                //获取 OpendId
                                var openidEntity = QQ.OpenId(new QQ_OpenId_RequestEntity()
                                    {
                                        access_token = tokenEntity.access_token
                                    });

                                //获取 UserInfo
                                var userEntity = QQ.OpenId_Get_User_Info(new QQ_OpenAPI_RequestEntity()
                                    {
                                        access_token = tokenEntity.access_token,
                                        openid       = openidEntity.openid
                                    });

                                //身份唯一标识
                                openId     = openidEntity.openid;
                                mo.OpenId1 = openId;

                                mo.Nickname = userEntity.nickname;
                                mo.UserSex  = userEntity.gender == "男" ? 1 : 2;
                                mo.UserSay  = "";
                                mo.UserUrl  = "";

                                avatar   = userEntity.figureurl_qq_1;
                                avatarhd = userEntity.figureurl_qq_2;
                            }
                            break;

                            case ValidateloginType.weibo:
                            {
                                //获取 access_token
                                var tokenEntity = Weibo.AccessToken(new Weibo_AccessToken_RequestEntity()
                                    {
                                        code = code
                                    });

                                //获取 access_token 的授权信息
                                var tokenInfoEntity = Weibo.GetTokenInfo(new Weibo_GetTokenInfo_RequestEntity()
                                    {
                                        access_token = tokenEntity.access_token
                                    });

                                //获取 users/show
                                var userEntity = Weibo.UserShow(new Weibo_UserShow_RequestEntity()
                                    {
                                        access_token = tokenEntity.access_token,
                                        uid          = Convert.ToInt64(tokenInfoEntity.uid)
                                    });

                                openId     = tokenEntity.access_token;
                                mo.OpenId2 = openId;

                                mo.Nickname = userEntity.screen_name;
                                mo.UserSex  = userEntity.gender == "m" ? 1 : userEntity.gender == "f" ? 2 : 0;
                                mo.UserSay  = userEntity.description;
                                mo.UserUrl  = userEntity.domain;

                                avatar   = userEntity.profile_image_url;
                                avatarhd = userEntity.avatar_large;
                            }
                            break;

                            case ValidateloginType.github:
                            {
                                //获取 access_token
                                var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                                    {
                                        code = code
                                    });

                                //获取 user
                                var userEntity = GitHub.User(new GitHub_User_RequestEntity()
                                    {
                                        access_token = tokenEntity.access_token
                                    });

                                openId     = userEntity.id.ToString();
                                mo.OpenId3 = openId;

                                mo.Nickname = userEntity.name;
                                mo.UserSay  = userEntity.bio;
                                mo.UserUrl  = userEntity.blog;
                                mo.UserMail = userEntity.email;

                                avatar   = userEntity.avatar_url;
                                avatarhd = userEntity.avatar_url;
                            }
                            break;

                            case ValidateloginType.taobao:
                            {
                                //获取 access_token
                                var tokenEntity = Taobao.AccessToken(new Taobao_AccessToken_RequestEntity()
                                    {
                                        code = code
                                    });

                                openId     = tokenEntity.open_uid;
                                mo.OpenId4 = openId;

                                mo.Nickname = "淘宝用户";
                            }
                            break;

                            case ValidateloginType.microsoft:
                            {
                                //获取 access_token
                                var tokenEntity = MicroSoft.AccessToken(new MicroSoft_AccessToken_RequestEntity()
                                    {
                                        code = code
                                    });

                                //获取 user
                                var userEntity = MicroSoft.User(new MicroSoft_User_RequestEntity()
                                    {
                                        access_token = tokenEntity.access_token
                                    });

                                openId     = userEntity.id.ToString();
                                mo.OpenId5 = openId;

                                mo.Nickname = userEntity.last_name + userEntity.first_name;
                                mo.UserMail = userEntity.emails["account"].ToStringOrEmpty();
                            }
                            break;
                            }
                        }
                        catch (Exception ex)
                        {
                            vm.msg = ex.Message;
                        }
                    }

                    mo.UserCreateTime = DateTime.Now;
                    mo.UserName       = openId;
                    mo.UserPwd        = Core.CalcTo.MD5(openId);
                    if (!string.IsNullOrWhiteSpace(avatar))
                    {
                        mo.UserPhoto = Core.UniqueTo.LongId().ToString() + ".jpg";
                    }

                    if (string.IsNullOrWhiteSpace(openId))
                    {
                        vm.msg = "身份验证失败";
                    }
                    else
                    {
                        //判断是绑定操作
                        bool isbind = false;
                        if (User.Identity.IsAuthenticated)
                        {
                            try
                            {
                                var aboa = Request.Cookies["AccountBindOAuth"];

                                if (!string.IsNullOrWhiteSpace(aboa) && (DateTime.Now - DateTime.Parse(aboa)).TotalSeconds < 120)
                                {
                                    int uid = new Func.UserAuthAid(HttpContext).Get().UserId;

                                    using (var db = new ContextBase())
                                    {
                                        //检测是否绑定其它账号
                                        var queryIsBind = db.UserInfo.Where(x => x.UserId != uid);
                                        switch (vtype)
                                        {
                                        case ValidateloginType.qq:
                                            queryIsBind = queryIsBind.Where(x => x.OpenId1 == openId);
                                            break;

                                        case ValidateloginType.weibo:
                                            queryIsBind = queryIsBind.Where(x => x.OpenId2 == openId);
                                            break;

                                        case ValidateloginType.github:
                                            queryIsBind = queryIsBind.Where(x => x.OpenId3 == openId);
                                            break;

                                        case ValidateloginType.taobao:
                                            queryIsBind = queryIsBind.Where(x => x.OpenId4 == openId);
                                            break;

                                        case ValidateloginType.microsoft:
                                            queryIsBind = queryIsBind.Where(x => x.OpenId5 == openId);
                                            break;
                                        }
                                        if (queryIsBind.Count() > 0)
                                        {
                                            return(Content("已绑定其它账号,不能重复绑定"));
                                        }

                                        var userInfo = db.UserInfo.Find(uid);

                                        switch (vtype)
                                        {
                                        case ValidateloginType.qq:
                                            userInfo.OpenId1 = openId;
                                            break;

                                        case ValidateloginType.weibo:
                                            userInfo.OpenId2 = openId;
                                            break;

                                        case ValidateloginType.github:
                                            userInfo.OpenId3 = openId;
                                            break;

                                        case ValidateloginType.taobao:
                                            userInfo.OpenId4 = openId;
                                            break;

                                        case ValidateloginType.microsoft:
                                            userInfo.OpenId5 = openId;
                                            break;
                                        }
                                        db.UserInfo.Update(userInfo);
                                        db.SaveChanges();
                                    }

                                    Response.Cookies.Delete("AccountBindOAuth");
                                    isbind = true;
                                }
                            }
                            catch (Exception)
                            {
                            }
                        }

                        //是绑定操作
                        if (isbind)
                        {
                            return(Redirect("/user/setting"));
                        }
                        else
                        {
                            using (var db = new ContextBase())
                            {
                                Domain.UserInfo vmo = null;
                                switch (vtype)
                                {
                                case ValidateloginType.qq:
                                    vmo = db.UserInfo.FirstOrDefault(x => x.OpenId1 == openId);
                                    break;

                                case ValidateloginType.weibo:
                                    vmo = db.UserInfo.FirstOrDefault(x => x.OpenId2 == openId);
                                    break;

                                case ValidateloginType.github:
                                    vmo = db.UserInfo.FirstOrDefault(x => x.OpenId3 == openId);
                                    break;

                                case ValidateloginType.taobao:
                                    vmo = db.UserInfo.FirstOrDefault(x => x.OpenId4 == openId);
                                    break;

                                case ValidateloginType.microsoft:
                                    vmo = db.UserInfo.FirstOrDefault(x => x.OpenId5 == openId);
                                    break;
                                }
                                //未注册
                                if (vmo == null)
                                {
                                    var ruvm = RegisterUser(mo);
                                    if (ruvm.code == 200)
                                    {
                                        vm = ValidateLogin(vtype, mo);
                                        //拉取头像
                                        if (vm.code == 200 && (!string.IsNullOrWhiteSpace(avatar) || !string.IsNullOrWhiteSpace(avatarhd)))
                                        {
                                            try
                                            {
                                                System.Net.WebClient wc = new System.Net.WebClient();

                                                var rootdir  = GlobalTo.WebRootPath + "/" + (GlobalTo.GetValue("StaticResource:RootDir").TrimStart('/').TrimEnd('/') + "/");
                                                var path     = GlobalTo.GetValue("StaticResource:AvatarPath").TrimEnd('/').TrimStart('/') + '/';
                                                var fullpath = rootdir + path;

                                                if (!System.IO.Directory.Exists(fullpath))
                                                {
                                                    System.IO.Directory.CreateDirectory(fullpath);
                                                }
                                                if (!string.IsNullOrWhiteSpace(avatar))
                                                {
                                                    wc.DownloadFile(avatar, fullpath + mo.UserPhoto);
                                                }
                                                if (!string.IsNullOrWhiteSpace(avatarhd))
                                                {
                                                    wc.DownloadFile(avatarhd, fullpath + mo.UserPhoto.Replace(".jpg", "_lg.jpg"));
                                                }
                                            }
                                            catch (Exception)
                                            {
                                            }
                                        }
                                    }
                                    else
                                    {
                                        vm.msg = ruvm.msg;
                                    }
                                }
                                else
                                {
                                    vm = ValidateLogin(vtype, vmo);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    vm.msg = ex.Message;
                }
            }

            //成功
            if (vm.code == 200)
            {
                return(Redirect("/"));
            }
            else
            {
                string msg = "【登录失败】( " + vm.msg + " )".ToEncode();
                return(Redirect("/home/error?msg=" + msg));
            }
        }
コード例 #16
0
ファイル: Program.cs プロジェクト: yonglehou/apploader
 public AgentHandlerLog(Taobao.Infrastructure.ILog log) : base(log) { }