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