Example #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string backurl = RequestTool.RequestString("backurl");
            int    IsLogin = 0;

            if (backurl.ToLower().IndexOf(URL("P_Login", "").ToLower()) > -1)
            {
                IsLogin = 1;
            }
            if (backurl == "" || backurl.ToLower().IndexOf(URL("P_Login", "").ToLower()) > -1 || backurl.ToLower().IndexOf(URL("P_Register", "").ToLower()) > -1 || backurl.ToLower().IndexOf(URL("P_FindPassword", "").ToLower()) > -1)
            {
                backurl = URL("P_UserCenter", "");
            }
            string res = Weibo.GetInstance(DT_id).Login(backurl, IsLogin);

            if (res == "OK")
            {
                if (backurl == "")
                {
                    Response.Redirect("../");
                }
                else
                {
                    Response.Redirect(QQ.Instance.DEBackuri(backurl));
                }
            }
            else
            {
                Response.Write(res);
            }
        }
 public static WeiboCache ConvertToWeiboCache(Weibo model)
 {
     return(new WeiboCache()
     {
         Id = model.Id, LikeCount = model.LikeCount
     });
 }
Example #3
0
        public async Task LoadHistoryAsync()
        {
            try
            {
                IsLoading = true;
                var request = new Request
                {
                    Page  = "1",
                    MaxId = string.IsNullOrEmpty(_minId) ? "0" : _minId
                };
                var response = await Weibo.ExecuteStatusesFriendsTimelineAsync(request);

                foreach (var item in response.Value.Statuses)
                {
                    if (item.Idstr != _minId)
                    {
                        _statusFriendsTimeline.Add(item);
                    }
                }
                _minId = _statusFriendsTimeline.Last().Idstr;
            }
            finally
            {
                IsLoading = false;
            }
        }
Example #4
0
        public void WeiboTest()
        {
            Channel channle = new Weibo(videoPath, coverPath, new string[] { "123", "321" }, title, introduction, null, null);

            channle.Operate();
            Console.ReadLine();
        }
Example #5
0
        public async Task LoadAsync()
        {
            var request = new Request {
                Uid = Weibo.CurrentAuthToken.ContextData["UserID"] as string
            };
            var response = await Weibo.ExecuteUsersShowAsync(request);

            UserProfile.ScreenName      = response.Value.ScreenName;
            UserProfile.ProfileImageUrl = response.Value.ProfileImageUrl;
            UserProfile.FollowersCount  = response.Value.FollowersCount;
            UserProfile.FriendsCount    = response.Value.FriendsCount;
            UserProfile.StatusesCount   = response.Value.StatusesCount;
        }
Example #6
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));
        }
Example #7
0
    public void loadWeibo()
    {
        WeiboContentList weiboContent = GameMain.GetInstance().GetModule <ResLoader>().LoadResource <WeiboContentList>("WeiboTxt/WeiboContentList", false);

        foreach (WeiboAsset w in weiboContent.Entities)
        {
            Weibo weibo = new Weibo();
            weibo.index   = w.Index;
            weibo.name    = w.Name;
            weibo.content = w.Content;
            weibo.time    = w.Time;
            weibo.avatar  = w.Avatar;

            weibo.forwardable = w.Forwardable == "Yes";
            weibo.gainCardId  = w.GainCard;

            weibo.reviewable = w.Reviewable == "Yes";
            if (weibo.reviewable)
            {
                List <Review> reviews = new List <Review>();
                if (w.Review1 != "None" && w.Review1.Length > 0)
                {
                    Review review1 = new Review();
                    review1.content = w.Review1;
                    review1.effect  = (WeiboReviewEffect)System.Enum.Parse(typeof(WeiboReviewEffect), w.Bonus1);
                    review1.value   = w.Value1;
                    reviews.Add(review1);
                }
                if (w.Review2 != "None" && w.Review2.Length > 0)
                {
                    Review review2 = new Review();
                    review2.content = w.Review2;
                    review2.effect  = (WeiboReviewEffect)System.Enum.Parse(typeof(WeiboReviewEffect), w.Bonus2);
                    review2.value   = w.Value2;
                    reviews.Add(review2);
                }
                if (w.Review3 != "None" && w.Review3.Length > 0)
                {
                    Review review3 = new Review();
                    review3.content = w.Review3;
                    review3.effect  = (WeiboReviewEffect)System.Enum.Parse(typeof(WeiboReviewEffect), w.Bonus3);
                    review3.value   = w.Value3;
                    reviews.Add(review3);
                }
                weibo.reviews = reviews;
            }
            weibos.Add(weibo);
        }
    }
Example #8
0
        /// <summary>
        /// 开始
        /// </summary>
        public void Start()
        {
            WeiboData data    = new WeiboData();
            Weibo     weibo   = data.GetUserWeiboData(this.Nick);
            string    content = string.Empty;
            string    index   = string.Empty;

            //获取订单编号
            string tradeId = utils.GetValueByPropertyNum(this.Msg, "tid");

            switch (this.Status)
            {
            case "ItemUpshelf":
                content = weibo.ContentUp;
                index   = "1";
                break;

            case "TradeCreate":
                content     = weibo.ContentSell;
                ItemInfo.ID = GetItemId(tradeId);
                index       = "2";
                break;

            case "TradeRated":
                content     = weibo.ContentReview;
                ItemInfo.ID = GetItemId(tradeId);
                index       = "3";
                break;

            case "ItemRecommendAdd":
                content = weibo.ContentRecommend;
                index   = "4";
                break;
            }

            string imgUrl = string.Empty;

            //如果卖家没有设置则退出
            if (content.Length == 0)
            {
                Console.Write(Nick + "-还没有设置微博自动发送的信息...\r\n");
                return;
            }

            content = ChangeTag(content, this.ItemInfo, ref imgUrl);

            SendWeiboMsg(Nick, content, imgUrl, index);
        }
Example #9
0
        /// <summary>
        /// 获取需要发送的微博信息
        /// </summary>
        /// <param name="nick"></param>
        /// <returns></returns>
        public Weibo GetUserWeiboData(string nick)
        {
            Weibo  weibo = new Weibo();
            string sql   = "SELECT content1,content2,content3,content4 FROM TopMicroBlogAuto WHERE nick = '" + nick + "'";

            DataTable dt = utils.ExecuteDataTable(sql);

            if (dt.Rows.Count != 0)
            {
                weibo.ContentUp        = dt.Rows[0][0].ToString();
                weibo.ContentSell      = dt.Rows[0][1].ToString();
                weibo.ContentReview    = dt.Rows[0][2].ToString();
                weibo.ContentRecommend = dt.Rows[0][3].ToString();
            }

            return(weibo);
        }
Example #10
0
        /// <summary>
        /// 微博登录
        /// </summary>
        /// <returns></returns>
        public ActionResult Weibo()
        {
            var res = new Weibo().Authorize();

            if (res != null && res.code == 0)
            {
                var m = new ThirdPartyUserModel
                {
                    Uid   = res.result.Value <string>("idstr"),
                    Name  = res.result.Value <string>("name"),
                    Img   = res.result.Value <string>("profile_image_url"),
                    Token = res.token
                };
            }

            return(null);
        }
Example #11
0
        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            string error = "";

            this.IsEnabled = false;
            try
            {
                if (!string.IsNullOrEmpty(this.InputArea.Text))
                {
                    if (ImageFile != null)
                    {
                        var fileInfo = new RestAPICore.FileUploadInfo();
                        fileInfo.LocalPath     = ImageFile.Name;
                        fileInfo.StreamFactory = GetImageFile(ImageFile);
                        var request = new SinaWeiboClientV2.StatusesUpload.Request
                        {
                            Status = this.InputArea.Text,
                            Pic    = fileInfo
                        };
                        var response = await Weibo.ExecuteStatusesUploadAsync(request);
                    }
                    else
                    {
                        var request = new SinaWeiboClientV2.StatusesUpdate.Request {
                            Status = this.InputArea.Text
                        };
                        var response = await Weibo.ExecuteStatusesUpdateAsync(request);
                    }
                }
                if (this.Parent is Popup)
                {
                    ((Popup)this.Parent).IsOpen = false;
                }
            }
            catch (Exception ex)
            {
                error = ex.Message;
            }
            this.IsEnabled = true;
            if (!string.IsNullOrEmpty(error))
            {
                var md = new MessageDialog(error);
                await md.ShowAsync();
            }
        }
Example #12
0
    public void randomWeibo()
    {
        //view.Time.text = randomTime();
        //view.Name.text = randomName();
        //view.Description.text = randomDescription();
        int count = pWeiboMgr.weiboList.weibos.Count;

        while (curWeiboIdx == lastWeiboIdx)
        {
            curWeiboIdx = UnityEngine.Random.Range(0, count);
        }
        lastWeiboIdx = curWeiboIdx;

        curWeibo = pWeiboMgr.weiboList.weibos[curWeiboIdx];
        loadWeibo();
        BindButtons();
        registerBranchEvent();
    }
Example #13
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));
        }
Example #14
0
        public IActionResult Weibo()
        {
            var res = new Weibo(_contextAccessor).Authorize();

            if (res != null && res.code == 0)
            {
                return(RedirectToLogin(new
                {
                    channel = "weibo",
                    code = 0,
                    user = new
                    {
                        uid = res.result.Value <string>("idstr"),
                        name = res.result.Value <string>("name"),
                        img = res.result.Value <string>("profile_image_url"),
                        token = res.token
                    }
                }));
            }

            return(View());
        }
Example #15
0
        public async Task LoadAsync()
        {
            try
            {
                IsLoading = true;
                //Weibo.CurrentAuthToken = await TokenHelper2.CreateOAuthTokenAsync(AppKey, AppSecret, UserId, Password, System.Threading.CancellationToken.None);
                var request = new Request
                {
                    Page    = "1",
                    SinceId = string.IsNullOrEmpty(_maxId) ? "0" : _maxId
                };
                var response = await Weibo.ExecuteStatusesFriendsTimelineAsync(request);

                if (string.IsNullOrEmpty(_maxId))
                {
                    foreach (var item in response.Value.Statuses)
                    {
                        _statusFriendsTimeline.Add(item);
                    }
                }
                else
                {
                    foreach (var item in response.Value.Statuses)
                    {
                        _statusFriendsTimeline.Insert(0, item);
                    }
                }
                _maxId = _statusFriendsTimeline.First().Idstr;
                if (string.IsNullOrEmpty(_minId))
                {
                    _minId = _statusFriendsTimeline.Last().Idstr;
                }
            }
            finally
            {
                IsLoading = false;
            }
        }
Example #16
0
        /// <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);
        }
 /// <summary>
 /// 新建
 /// </summary>
 public void AddWeibo(Weibo weibo)
 {
     ExecuteInsert("InsertWeibo", weibo);
 }
Example #18
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));
            }
        }
Example #19
0
        /// <summary>
        /// 登录授权回调
        /// </summary>
        /// <param name="authorizeResult">获取授权码以及防伪标识</param>
        /// <returns></returns>
        public IActionResult AuthCallback(LoginBase.AuthorizeResult authorizeResult)
        {
            var vm = new SharedResultVM();

            try
            {
                if (string.IsNullOrWhiteSpace(authorizeResult.code))
                {
                    vm.Set(SharedEnum.RTag.unauthorized);
                }
                else
                {
                    //唯一标示
                    string openId = string.Empty;
                    //注册信息
                    var mo = new Domain.UserInfo()
                    {
                        LoginLimit     = 0,
                        UserSex        = 0,
                        UserCreateTime = DateTime.Now
                    };
                    //头像
                    string avatar = string.Empty;

                    Enum.TryParse(RouteData.Values["id"]?.ToString(), true, out LoginBase.LoginType vtype);

                    switch (vtype)
                    {
                    case LoginBase.LoginType.QQ:
                    {
                        //获取 access_token
                        var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });
                        Console.WriteLine(tokenEntity.ToJson());

                        //获取 OpendId
                        var openidEntity = QQ.OpenId(tokenEntity.access_token);
                        Console.WriteLine(openidEntity.ToJson());

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

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

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

                        avatar = userEntity.figureurl_2;
                    }
                    break;

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

                        //获取 access_token 的授权信息
                        var tokenInfoEntity = Weibo.GetTokenInfo(tokenEntity.access_token);
                        Console.WriteLine(tokenInfoEntity.ToJson());

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

                        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.avatar_large;
                    }
                    break;

                    case LoginBase.LoginType.WeChat:
                    {
                        //获取 access_token
                        var tokenEntity = Netnr.Login.WeChat.AccessToken(new WeChat_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });
                        Console.WriteLine(tokenEntity.ToJson());

                        //openId = tokenEntity.openid;

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

                        avatar = userEntity.headimgurl;
                    }
                    break;

                    case LoginBase.LoginType.GitHub:
                    {
                        //获取 access_token
                        var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });
                        Console.WriteLine(tokenEntity.ToJson());

                        //获取 user
                        var userEntity = GitHub.User(tokenEntity.access_token);
                        Console.WriteLine(userEntity.ToJson());

                        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;
                    }
                    break;

                    case LoginBase.LoginType.Gitee:
                    {
                        //获取 access_token
                        var tokenEntity = Gitee.AccessToken(new Gitee_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });
                        Console.WriteLine(tokenEntity.ToJson());

                        //获取 user
                        var userEntity = Gitee.User(tokenEntity.access_token);
                        Console.WriteLine(userEntity.ToJson());

                        //openId = userEntity.id.ToString();

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

                        avatar = userEntity.avatar_url;
                    }
                    break;

                    case LoginBase.LoginType.TaoBao:
                    {
                        //获取 access_token
                        var tokenEntity = TaoBao.AccessToken(new TaoBao_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });
                        Console.WriteLine(tokenEntity.ToJson());

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

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

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

                        //获取 user
                        var userEntity = MicroSoft.User(tokenEntity.access_token);
                        Console.WriteLine(userEntity.ToJson());

                        openId     = userEntity.id;
                        mo.OpenId5 = openId;

                        mo.Nickname = userEntity.last_name + userEntity.first_name;
                        mo.UserMail = userEntity.emails?["account"].ToStringOrEmpty();
                    }
                    break;

                    case LoginBase.LoginType.DingTalk:
                    {
                        //获取 user
                        var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code);
                        Console.WriteLine(userEntity.ToJson());

                        openId     = userEntity.openid;
                        mo.OpenId6 = openId;

                        mo.Nickname = userEntity.nick;
                    }
                    break;

                    case LoginBase.LoginType.Google:
                    {
                        //获取 access_token
                        var tokenEntity = Google.AccessToken(new Google_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });
                        Console.WriteLine(tokenEntity.ToJson());

                        //获取 user
                        var userEntity = Google.User(tokenEntity.access_token);
                        Console.WriteLine(userEntity.ToJson());

                        //openId = userEntity.sub;

                        avatar = userEntity.picture;
                    }
                    break;

                    case LoginBase.LoginType.AliPay:
                    {
                        //获取 access_token
                        var tokenEntity = AliPay.AccessToken(new AliPay_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });
                        Console.WriteLine(tokenEntity.ToJson());

                        //openId = tokenEntity.user_id;

                        //获取 user
                        var userEntity = AliPay.User(new AliPay_User_RequestEntity()
                            {
                                auth_token = tokenEntity.access_token
                            });
                        Console.WriteLine(userEntity.ToJson());

                        avatar = userEntity.avatar;
                    }
                    break;

                    case LoginBase.LoginType.StackOverflow:
                    {
                        //获取 access_token
                        var tokenEntity = StackOverflow.AccessToken(new StackOverflow_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });
                        Console.WriteLine(tokenEntity.ToJson());

                        //获取 user
                        var userEntity = StackOverflow.User(new StackOverflow_User_RequestEntity()
                            {
                                access_token = tokenEntity.access_token
                            });
                        Console.WriteLine(userEntity.ToJson());

                        //openId= userEntity.user_id;

                        avatar = userEntity.profile_image;
                    }
                    break;
                    }

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

                    if (string.IsNullOrWhiteSpace(openId))
                    {
                        vm.Set(SharedEnum.RTag.unauthorized);
                        vm.Msg = "身份验证失败";
                    }
                    else
                    {
                        //判断是绑定操作
                        bool isbind = User.Identity.IsAuthenticated && authorizeResult.state.StartsWith("bind");
                        if (isbind)
                        {
                            int uid = Apps.LoginService.Get(HttpContext).UserId;

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

                            case LoginBase.LoginType.WeiBo:
                                queryIsBind = queryIsBind.Where(x => x.OpenId2 == openId);
                                break;

                            case LoginBase.LoginType.GitHub:
                                queryIsBind = queryIsBind.Where(x => x.OpenId3 == openId);
                                break;

                            case LoginBase.LoginType.TaoBao:
                                queryIsBind = queryIsBind.Where(x => x.OpenId4 == openId);
                                break;

                            case LoginBase.LoginType.MicroSoft:
                                queryIsBind = queryIsBind.Where(x => x.OpenId5 == openId);
                                break;

                            case LoginBase.LoginType.DingTalk:
                                queryIsBind = queryIsBind.Where(x => x.OpenId6 == openId);
                                break;
                            }
                            if (queryIsBind.Any())
                            {
                                return(Content("已绑定其它账号,不能重复绑定"));
                            }

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

                            switch (vtype)
                            {
                            case LoginBase.LoginType.QQ:
                                userInfo.OpenId1 = openId;
                                break;

                            case LoginBase.LoginType.WeiBo:
                                userInfo.OpenId2 = openId;
                                break;

                            case LoginBase.LoginType.GitHub:
                                userInfo.OpenId3 = openId;
                                break;

                            case LoginBase.LoginType.TaoBao:
                                userInfo.OpenId4 = openId;
                                break;

                            case LoginBase.LoginType.MicroSoft:
                                userInfo.OpenId5 = openId;
                                break;

                            case LoginBase.LoginType.DingTalk:
                                userInfo.OpenId6 = openId;
                                break;
                            }
                            db.UserInfo.Update(userInfo);
                            db.SaveChanges();

                            return(Redirect("/user/setting"));
                        }
                        else
                        {
                            Domain.UserInfo vmo = null;
                            switch (vtype)
                            {
                            case LoginBase.LoginType.QQ:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId1 == openId);
                                break;

                            case LoginBase.LoginType.WeiBo:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId2 == openId);
                                break;

                            case LoginBase.LoginType.GitHub:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId3 == openId);
                                break;

                            case LoginBase.LoginType.TaoBao:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId4 == openId);
                                break;

                            case LoginBase.LoginType.MicroSoft:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId5 == openId);
                                break;

                            case LoginBase.LoginType.DingTalk:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId6 == openId);
                                break;
                            }
                            //未注册
                            if (vmo == null)
                            {
                                var ruvm = RegisterUser(mo);
                                if (ruvm.Code == 200)
                                {
                                    vm = ValidateLogin(vtype, mo);
                                    //拉取头像
                                    if (vm.Code == 200 && !string.IsNullOrWhiteSpace(avatar))
                                    {
                                        try
                                        {
                                            //物理根路径
                                            var prp   = GlobalTo.GetValue("StaticResource:PhysicalRootPath").Replace("~", GlobalTo.ContentRootPath);
                                            var ppath = PathTo.Combine(prp, GlobalTo.GetValue("StaticResource:AvatarPath"));

                                            if (!Directory.Exists(ppath))
                                            {
                                                Directory.CreateDirectory(ppath);
                                            }

                                            HttpTo.DownloadSave(HttpTo.HWRequest(avatar), PathTo.Combine(ppath, mo.UserPhoto));
                                        }
                                        catch (Exception ex)
                                        {
                                            Console.WriteLine(ex);
                                        }
                                    }
                                }
                                else
                                {
                                    vm.Msg = ruvm.Msg;
                                }
                            }
                            else
                            {
                                vm = ValidateLogin(vtype, vmo);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Apps.FilterConfigs.WriteLog(HttpContext, ex);
                Response.Headers["X-Output-Msg"] = ex.ToJson();
                vm.Set(ex);
            }

            //成功
            if (vm.Code == 200)
            {
                var rurl = Request.Cookies["ReturnUrl"];
                rurl = string.IsNullOrWhiteSpace(rurl) ? "/" : rurl;

                if (rurl.StartsWith("http"))
                {
                    rurl += "?cookie=ok";
                }

                return(Redirect(rurl));
            }
            else
            {
                return(Redirect("/home/error"));
            }
        }
Example #20
0
            /// <summary>
            /// 回调方法
            /// </summary>
            /// <param name="authorizeResult">接收授权码、防伪参数</param>
            public void AuthCallback(LoginBase.AuthorizeResult authorizeResult)
            {
                if (string.IsNullOrWhiteSpace(authorizeResult.code))
                {
                    //打开链接没登录授权
                }
                else
                {
                    //唯一标示
                    string OpenId = string.Empty;

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

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

                        //获取 UserInfo
                        _ = 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 = authorizeResult.code
                            });

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

                        //获取 users/show
                        _ = 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 = authorizeResult.code
                            });

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

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

                    case LoginBase.LoginType.GitHub:
                    {
                        //获取 access_token
                        var tokenEntity = GitHub.AccessToken(new GitHub_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.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 = authorizeResult.code
                            });

                        OpenId = tokenEntity.open_uid;
                    }
                    break;

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

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

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

                    case LoginBase.LoginType.DingTalk:
                    {
                        //获取 user
                        var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code);

                        OpenId = userEntity?.openid;
                    }
                    break;

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

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

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

                    //拿到登录标识
                    if (string.IsNullOrWhiteSpace(OpenId))
                    {
                        //TO DO
                    }
                }
            }
Example #21
0
            /// <summary>
            /// 登录链接
            /// </summary>
            /// <param name="loginType">登录类型</param>
            /// <param name="authType">登录防伪追加标识,区分登录、注册</param>
            /// <returns></returns>
            public static string LoginLink(string loginType, string authType = "")
            {
                string url = string.Empty;

                if (Enum.TryParse(loginType, true, out LoginBase.LoginType vtype))
                {
                    switch (vtype)
                    {
                    case LoginBase.LoginType.QQ:
                    {
                        var reqe = new QQ_Authorization_RequestEntity();
                        if (!string.IsNullOrWhiteSpace(authType))
                        {
                            reqe.state = authType + reqe.state;
                        }
                        url = QQ.AuthorizationHref(reqe);
                    }
                    break;

                    case LoginBase.LoginType.WeiBo:
                    {
                        var reqe = new Weibo_Authorize_RequestEntity();
                        if (!string.IsNullOrWhiteSpace(authType))
                        {
                            reqe.state = authType + reqe.state;
                        }
                        url = Weibo.AuthorizeHref(reqe);
                    }
                    break;

                    case LoginBase.LoginType.GitHub:
                    {
                        var reqe = new GitHub_Authorize_RequestEntity();
                        if (!string.IsNullOrWhiteSpace(authType))
                        {
                            reqe.state = authType + reqe.state;
                        }
                        url = GitHub.AuthorizeHref(reqe);
                    }
                    break;

                    case LoginBase.LoginType.TaoBao:
                    {
                        var reqe = new TaoBao_Authorize_RequestEntity();
                        if (!string.IsNullOrWhiteSpace(authType))
                        {
                            reqe.state = authType + reqe.state;
                        }
                        url = TaoBao.AuthorizeHref(reqe);
                    }
                    break;

                    case LoginBase.LoginType.MicroSoft:
                    {
                        var reqe = new MicroSoft_Authorize_RequestEntity();
                        if (!string.IsNullOrWhiteSpace(authType))
                        {
                            reqe.state = authType + reqe.state;
                        }
                        url = MicroSoft.AuthorizeHref(reqe);
                    }
                    break;

                    case LoginBase.LoginType.DingTalk:
                    {
                        var reqe = new DingTalk_Authorize_RequestEntity();
                        if (!string.IsNullOrWhiteSpace(authType))
                        {
                            reqe.state = authType + reqe.state;
                        }
                        url = DingTalk.AuthorizeHref_ScanCode(reqe);
                    }
                    break;
                    }
                }

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

                return(url);
            }
Example #22
0
        public override string ToString()
        {
            this.Init__jsonIgnore();
            string json = string.Concat(
                __jsonIgnore.ContainsKey("Id") ? string.Empty : string.Format(", Id : {0}", Id == null ? "null" : Id.ToString()),
                __jsonIgnore.ContainsKey("Create_time") ? string.Empty : string.Format(", Create_time : {0}", Create_time == null ? "null" : Create_time.Value.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds.ToString()),
                __jsonIgnore.ContainsKey("Email") ? string.Empty : string.Format(", Email : {0}", Email == null ? "null" : string.Format("'{0}'", Email.Replace("\\", "\\\\").Replace("\r\n", "\\r\\n").Replace("'", "\\'"))),
                __jsonIgnore.ContainsKey("Github") ? string.Empty : string.Format(", Github : {0}", Github == null ? "null" : string.Format("'{0}'", Github.Replace("\\", "\\\\").Replace("\r\n", "\\r\\n").Replace("'", "\\'"))),
                __jsonIgnore.ContainsKey("Location") ? string.Empty : string.Format(", Location : {0}", Location == null ? "null" : string.Format("'{0}'", Location.Replace("\\", "\\\\").Replace("\r\n", "\\r\\n").Replace("'", "\\'"))),
                __jsonIgnore.ContainsKey("Password") ? string.Empty : string.Format(", Password : {0}", Password == null ? "null" : string.Format("'{0}'", Password.Replace("\\", "\\\\").Replace("\r\n", "\\r\\n").Replace("'", "\\'"))),
                __jsonIgnore.ContainsKey("Point") ? string.Empty : string.Format(", Point : {0}", Point == null ? "null" : Point.ToString()),
                __jsonIgnore.ContainsKey("Sign") ? string.Empty : string.Format(", Sign : {0}", Sign == null ? "null" : string.Format("'{0}'", Sign.Replace("\\", "\\\\").Replace("\r\n", "\\r\\n").Replace("'", "\\'"))),
                __jsonIgnore.ContainsKey("Username") ? string.Empty : string.Format(", Username : {0}", Username == null ? "null" : string.Format("'{0}'", Username.Replace("\\", "\\\\").Replace("\r\n", "\\r\\n").Replace("'", "\\'"))),
                __jsonIgnore.ContainsKey("Website") ? string.Empty : string.Format(", Website : {0}", Website == null ? "null" : string.Format("'{0}'", Website.Replace("\\", "\\\\").Replace("\r\n", "\\r\\n").Replace("'", "\\'"))),
                __jsonIgnore.ContainsKey("Weibo") ? string.Empty : string.Format(", Weibo : {0}", Weibo == null ? "null" : string.Format("'{0}'", Weibo.Replace("\\", "\\\\").Replace("\r\n", "\\r\\n").Replace("'", "\\'"))), " }");

            return(string.Concat("{", json.Substring(1)));
        }
Example #23
0
            /// <summary>
            /// 生成请求链接
            /// </summary>
            /// <param name="authType">在防伪参数追加信息(可用于登录、注册、绑定、解绑区分)</param>
            /// <returns></returns>
            public string Auth(string authType = "")
            {
                var url = string.Empty;

                switch (loginType)
                {
                case LoginBase.LoginType.QQ:
                {
                    var reqe = new QQ_Authorization_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = QQ.AuthorizationHref(reqe);
                }
                break;

                case LoginBase.LoginType.WeiBo:
                {
                    var reqe = new Weibo_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Weibo.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.GitHub:
                {
                    var reqe = new GitHub_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = GitHub.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.TaoBao:
                {
                    var reqe = new TaoBao_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = TaoBao.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.MicroSoft:
                {
                    var reqe = new MicroSoft_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = MicroSoft.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.WeChat:
                {
                    var reqe = new WeChat_Authorization_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Login.WeChat.AuthorizationHref(reqe);
                }
                break;

                case LoginBase.LoginType.DingTalk:
                {
                    var reqe = new DingTalk_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    //扫描模式
                    url = DingTalk.AuthorizeHref_ScanCode(reqe);

                    //密码模式
                    //url = DingTalk.AuthorizeHref_Password(reqe);
                }
                break;

                case LoginBase.LoginType.Gitee:
                {
                    var reqe = new Gitee_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Gitee.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.Google:
                {
                    var reqe = new Google_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = Google.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.AliPay:
                {
                    var reqe = new AliPay_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = AliPay.AuthorizeHref(reqe);
                }
                break;

                case LoginBase.LoginType.StackOverflow:
                {
                    var reqe = new StackOverflow_Authorize_RequestEntity();
                    if (!string.IsNullOrWhiteSpace(authType))
                    {
                        reqe.state = authType + reqe.state;
                    }
                    url = StackOverflow.AuthorizeHref(reqe);
                }
                break;
                }

                return(url);
            }
Example #24
0
        /// <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
                }
            }
        }
 /// <summary>
 /// 修改
 /// </summary>
 public void UpdateWeibo(Weibo weibo)
 {
     ExecuteUpdate("UpdateWeibo", weibo);
 }
Example #26
0
        public IActionResult AuthCallback(LoginBase.AuthorizeResult authorizeResult)
        {
            var vm = new ActionResultVM();

            try
            {
                if (string.IsNullOrWhiteSpace(authorizeResult.code))
                {
                    vm.Set(ARTag.unauthorized);
                }
                else
                {
                    //唯一标示
                    string openId = string.Empty;
                    //注册信息
                    var mo = new Domain.UserInfo()
                    {
                        LoginLimit     = 0,
                        UserSex        = 0,
                        UserCreateTime = DateTime.Now
                    };
                    //头像
                    string avatar = string.Empty;
                    //头像(高清)
                    string avatarhd = string.Empty;

                    Enum.TryParse(RouteData.Values["id"]?.ToString(), true, out ValidateloginType vtype);

                    switch (vtype)
                    {
                    case ValidateloginType.qq:
                    {
                        //获取 access_token
                        var tokenEntity = QQ.AccessToken(new QQ_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.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 = authorizeResult.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 = authorizeResult.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 = authorizeResult.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 = authorizeResult.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;

                    case ValidateloginType.dingtalk:
                    {
                        //获取 user
                        var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code);

                        openId     = userEntity.openid;
                        mo.OpenId6 = openId;

                        mo.Nickname = userEntity.nick;
                    }
                    break;
                    }

                    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.Set(ARTag.unauthorized);
                        vm.msg = "身份验证失败";
                    }
                    else
                    {
                        //判断是绑定操作
                        bool isbind = User.Identity.IsAuthenticated && authorizeResult.state.StartsWith("bind");
                        if (isbind)
                        {
                            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;

                                case ValidateloginType.dingtalk:
                                    queryIsBind = queryIsBind.Where(x => x.OpenId6 == 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;

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

                            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;

                            case ValidateloginType.dingtalk:
                                vmo = db.UserInfo.FirstOrDefault(x => x.OpenId6 == 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
                                        {
                                            using var 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.Set(ex);
            }

            //成功
            if (vm.code == 200)
            {
                return(Redirect("/"));
            }
            else
            {
                string msg = "【登录失败】( " + vm.msg + " )".ToEncode();
                return(Redirect("/home/error?msg=" + msg));
            }
        }
Example #27
0
            /// <summary>
            /// 回调方法
            /// </summary>
            /// <param name="authorizeResult">接收授权码、防伪参数</param>
            public void AuthCallback(LoginBase.AuthorizeResult authorizeResult)
            {
                if (!string.IsNullOrWhiteSpace(authorizeResult.code) || !string.IsNullOrWhiteSpace(authorizeResult.auth_code))
                {
                    //唯一标识
                    string OpenId = string.Empty;

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

                        //获取 OpendId
                        var openidEntity = QQ.OpenId(tokenEntity.access_token);

                        //获取 UserInfo
                        _ = 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 = authorizeResult.code
                            });

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

                        //获取 users/show
                        _ = 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 = Login.WeChat.AccessToken(new WeChat_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.code
                            });

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

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

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

                        //获取 user
                        var userEntity = GitHub.User(tokenEntity.access_token);

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

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

                        OpenId = tokenEntity.open_uid;
                    }
                    break;

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

                        //获取 user
                        var userEntity = MicroSoft.User(tokenEntity.access_token);

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

                    case LoginBase.LoginType.DingTalk:
                    {
                        //获取 user
                        var userEntity = DingTalk.User(new DingTalk_User_RequestEntity(), authorizeResult.code);

                        OpenId = userEntity?.openid;
                    }
                    break;

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

                        //获取 user
                        var userEntity = Gitee.User(tokenEntity.access_token);

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

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

                        //获取 user
                        var userEntity = Google.User(tokenEntity.access_token);

                        OpenId = userEntity.sub;
                    }
                    break;

                    case LoginBase.LoginType.AliPay:
                    {
                        //获取 access_token
                        var tokenEntity = AliPay.AccessToken(new AliPay_AccessToken_RequestEntity()
                            {
                                code = authorizeResult.auth_code
                            });

                        //实际上这一步已经获取到 OpenId,登录验证可以了,获取个人信息还需调用下面的接口
                        //tokenEntity.user_id

                        //获取 user
                        var userEntity = AliPay.User(new AliPay_User_RequestEntity()
                            {
                                auth_token = tokenEntity.access_token
                            });

                        OpenId = userEntity.user_id;
                    }
                    break;

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

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

                        OpenId = userEntity.user_id;
                    }
                    break;
                    }

                    //拿到登录标识
                    if (string.IsNullOrWhiteSpace(OpenId))
                    {
                        //TO DO
                    }
                }
            }