public static async Task <LoginResult> XiamiLogin(string useremail, string password) { if (CheckMemberAuth()) { return(new LoginResult(LoginStatus.LoggedInAlready)); } var token = await GetToken(); string content = $"_xiamitoken={token}&done=http%253A%252F%252Fwww.xiami.com&from=web&havanaId=&email={WebUtility.UrlEncode(useremail)}&password={WebUtility.UrlEncode(password)}&submit=%E7%99%BB+%E5%BD%95"; HttpContent pcontent = new StringContent(content); //pcontent.Headers.Add("Referer", "https://login.xiami.com/member/login"); pcontent.Headers.Add("Origin", "https://login.xiami.com/"); var callback = await HttpHelper.PostAsync("https://login.xiami.com/member/login?callback=jQuery", pcontent, (headers) => headers.Referrer = new Uri("https://login.xiami.com/member/login")); _logincallback callbackdata = JsonConvert.DeserializeObject <_logincallback>(callback.Substring(8, callback.Length - 9));//"JQuery(...)" var success = callbackdata.status; if (success) { NickName = WebUtility.HtmlDecode(callbackdata.data.nick_name); UserId = uint.Parse(callbackdata.data.user_id); IsLoggedIn = true; return(new LoginResult(LoginStatus.Success)); } else if (callbackdata.message.StartsWith("请使用淘宝")) { return(new LoginResult(LoginStatus.NeedTaobaoLogin, callbackdata.message.Substring(7, callbackdata.message.Length - 10))); } else { return(new LoginResult(LoginStatus.Unknown)); } }
public static async Task <LoginResult> CheckNeedTaobaoLogin(string useremail) { var callback = await HttpHelper.GetAsync($"https://login.xiami.com/accounts/checkxiaminame?email={WebUtility.HtmlEncode(useremail)}"); _logincallback callbackdata = JsonConvert.DeserializeObject <_logincallback>(callback); if (callbackdata.status) { return(new LoginResult(LoginStatus.Success)); } else { return(new LoginResult(LoginStatus.NeedTaobaoLogin, callbackdata.data.taobao_nick)); } }