Example #1
0
 /// <summary>
 /// 微博预登录
 /// </summary>
 /// <param name="username">用户名</param>
 /// <returns></returns>
 public static PreLoginResponseData PreLogin(string username)
 {
     try
     {
         string     userNameBase64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(HttpUtility.UrlEncode(username)));
         string     url            = "http://login.sina.com.cn/sso/prelogin.php";
         PostHelper post           = new PostHelper(url);
         post.Cookies   = new CookieContainer();
         post.PostItems = PreLoginData.Create(userNameBase64);
         string result = post.Post();
         Regex  re     = new Regex("{.*}");
         if (re.IsMatch(result))
         {
             var data         = re.Match(result).ToString();
             var responseData = Newtonsoft.Json.JsonConvert.DeserializeObject <PreLoginResponseData>(data);
             if (responseData != null)
             {
                 responseData.cookies = PostHelper.GetAllCookies(post.Cookies);
                 return(responseData);
             }
         }
     }
     catch
     { }
     return(null);
 }
Example #2
0
        private dynamic PreparePostBodyForLogin(PreLoginData preLoginData)
        {
            var showPin = preLoginData.ServerData.showpin == "1";

            if (showPin && string.IsNullOrEmpty(Pin))
            {
                _preLoginDataState = preLoginData;
                throw new SinaPinNotFoundException(preLoginData.ServerData.pcid);
            }

            dynamic postObj = new ExpandoObject();

            postObj.entry      = "weibo";
            postObj.gateway    = 1;
            postObj.from       = string.Empty;
            postObj.savestate  = 7;
            postObj.useticket  = 1;
            postObj.vsnf       = 1;
            postObj.su         = preLoginData.UserName;
            postObj.service    = "miniblog";
            postObj.servertime = preLoginData.ServerData.serverTime;
            postObj.nonce      = preLoginData.ServerData.nonce;
            postObj.pwencode   = "rsa2";
            postObj.rsakv      = preLoginData.ServerData.rsakv;
            postObj.sp         = preLoginData.Password;
            postObj.sr         = "1366*768";
            postObj.prelt      = 282;
            postObj.encoding   = "UTF-8";
            postObj.url        = "http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack";
            postObj.returntype = "META";

            return(postObj);
        }
Example #3
0
        private async Task <PreLoginData> PreLoginAsync()
        {
            if (_preLoginDataState != null)
            {
                var preLogin = _preLoginDataState;
                _preLoginDataState = null;
                return(preLogin);
            }

            var userName = EncodeUserName(_userName);

            var preLoginJsonResult = await PreLoginAsync(userName);

            var preLoginData = JToken.Parse(preLoginJsonResult);

            dynamic serverData = new ExpandoObject();

            serverData.serverTime = preLoginData["servertime"]?.ToString();
            serverData.nonce      = preLoginData["nonce"]?.ToString();
            serverData.rsakv      = preLoginData["rsakv"]?.ToString();
            serverData.pubkey     = "0" + preLoginData["pubkey"]?.ToString();
            serverData.showpin    = preLoginData["showpin"]?.ToString();
            serverData.pcid       = preLoginData["pcid"]?.ToString();

            var data = new PreLoginData
            {
                UserName   = userName,
                Password   = EncodePassword(_password, serverData.serverTime, serverData.nonce, serverData.pubkey),
                ServerData = serverData
            };

            return(data);
        }
Example #4
0
        public SinaWeiboLoginSimulator(string userName, string password, CookieContainer cookieContainer = null)
        {
            _userName = userName;
            _password = password;

            _cookieContainer   = cookieContainer ?? new CookieContainer();
            _webRequestEx      = new WebRequestEx(_cookieContainer);
            _preLoginDataState = null;
        }
Example #5
0
        public async Task <string> RefreshPinImageAsync()
        {
            _preLoginDataState = await PreLoginAsync();

            return(SinaWeiboUtility.GeneratePinImageUrl(_preLoginDataState.ServerData.pcid));
        }