Ejemplo n.º 1
0
        private async Task <bool> authAsync(Dictionary <string, object> parameters, CancellationTokenSource tokensource = null)
        {
            var header = new Dictionary <string, object>
            {
                { "Referer", "http://www.pixiv.net/" }//header
            };
            var api = "https://oauth.secure.pixiv.net/auth/token";//oauth_url

            Task <HttpResponseMessage> taskpost;


            taskpost = HttpPostAsync(api, header, parameters, tokensource);

            HttpResponseMessage result = null;

            try
            {
                result = await taskpost;
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    throw new Exception(ex.Message + '\n' + ex.InnerException.Message);
                }
                throw ex;
            }

            this.checkAuthResponse(result);


            var json = JObject.Parse(result.Content.ReadAsStringAsync().Result);

            user        = new pixivUser();
            user.avatar = new string[3];

            var response = json.Value <JObject>("response");

            user.access_token  = response["access_token"].ToString();
            user.expires_time  = (int)response["expires_in"];
            user.refresh_token = response["refresh_token"].ToString();
            user.id            = response["user"]["id"].ToString();
            user.name          = response["user"]["name"].ToString();
            user.avatar[0]     = response["user"]["profile_image_urls"]["px_16x16"].ToString();   //0 small
            user.avatar[1]     = response["user"]["profile_image_urls"]["px_50x50"].ToString();   //1 middle
            user.avatar[2]     = response["user"]["profile_image_urls"]["px_170x170"].ToString(); //2 big
            return(true);
        }
Ejemplo n.º 2
0
        public async void LoginAsync()
        {
            cts = new CancellationTokenSource();
            OAuth oAuth  = new OAuth();
            bool  result = false;

            try
            {
                result = (!string.IsNullOrWhiteSpace(this.refresh_token)) ? await oAuth.authAsync(this.refresh_token, cts) : await oAuth.authAsync(Profile.userName, Profile.passWord, cts);
            }
            catch (Exception ex)
            {
                return;
                //throw;
            }
            if (result)
            {
                pixivAPI           = new pixivAPI(oAuth);
                pixivUser          = oAuth.User;
                this.refresh_token = pixivUser.refresh_token;
                instance           = this;

                //线程下载所有排行
                new Thread(new ThreadStart(async delegate { await listview_load(50, "daily", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "weekly", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "monthly", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "rookie", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "daily_r18", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "weekly_r18", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "r18g", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "original", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "male", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "female", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "male_r18", 1, null); })).Start();
                new Thread(new ThreadStart(async delegate { await listview_load(50, "female_r18", 1, null); })).Start();
            }
        }
Ejemplo n.º 3
0
        private async Task <bool> authAsync(Dictionary <string, object> parameters, CancellationTokenSource tokensource = null)
        {
            string time = DateTime.UtcNow.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ");
            string hash = null;

            using (var md5 = System.Security.Cryptography.MD5.Create())
            {
                var           array = md5.ComputeHash(Encoding.UTF8.GetBytes((time + "28c1fdd170a5204386cb1313c7077b34f83e4aaf4aa829ce78c231e05b0bae2c").Trim()));
                StringBuilder sb    = new StringBuilder();
                for (int i = 0; i < array.Length; i++)
                {
                    sb.Append(array[i].ToString("x2"));
                }
                hash = sb.ToString();
            }
            var header = new Dictionary <string, object>
            {
                { "Referer", "http://www.pixiv.net/" },//header
                { "X-Client-Time", time },
                { "X-Client-Hash", hash }
            };
            var api = "https://oauth.secure.pixiv.net/auth/token";//oauth_url

            Task <HttpResponseMessage> taskpost;


            taskpost = HttpPostAsync(api, header, parameters, tokensource);

            HttpResponseMessage result = null;

            try
            {
                result = await taskpost;
            }
            catch (Exception ex)
            {
                if (ex.InnerException != null)
                {
                    throw new Exception(ex.Message + '\n' + ex.InnerException.Message);
                }
                throw ex;
            }

            this.checkAuthResponse(result);


            var json = JObject.Parse(result.Content.ReadAsStringAsync().Result);

            user        = new pixivUser();
            user.avatar = new string[3];

            var response = json.Value <JObject>("response");

            user.access_token  = response["access_token"].ToString();
            user.expires_time  = (int)response["expires_in"];
            user.refresh_token = response["refresh_token"].ToString();
            user.id            = response["user"]["id"].ToString();
            user.name          = response["user"]["name"].ToString();
            user.avatar[0]     = response["user"]["profile_image_urls"]["px_16x16"].ToString();   //0 small
            user.avatar[1]     = response["user"]["profile_image_urls"]["px_50x50"].ToString();   //1 middle
            user.avatar[2]     = response["user"]["profile_image_urls"]["px_170x170"].ToString(); //2 big
            return(true);
        }