//セッションを確立した後に呼ぶ public SigninStatus SignInInternal() { //ニコニコTOPにレスポンスヘッダを要求する var message = new HttpRequestMessage(HttpMethod.Head, NicoNicoTop); var response = HttpClient.SendAsync(message).Result; //成功したら if (response.StatusCode == HttpStatusCode.OK) { //レスポンスヘッダにユーザーIDが無かったらログイン失敗 if (!response.Headers.Contains("x-niconico-id")) { return(SigninStatus.Failed); } //ユーザーIDを取得 UserId = response.Headers.GetValues("x-niconico-id").Single(); //アカウント権限 Authority = (NiconicoAccountAuthority)int.Parse(response.Headers.GetValues("x-niconico-authflag").Single()); //cookieを取得 var cookie = HttpHandler.CookieContainer.GetCookies(new Uri("http://nicovideo.jp/")).Cast <Cookie>() .Where(c => c.Name == "user_session" && c.Path == "/").OrderByDescending(c => c.Expires.Ticks).First(); if (cookie != null && cookie.Expires != null) { //cookieをもとにキーと有効期限を取得 Key = cookie.Value; Expire = cookie.Expires; App.SetCookie(new Uri("http://nicovideo.jp/"), "user_session=" + Key); //Chromium側にセッションを使わせる //var b = CefSharp.Cef.GetGlobalCookieManager().SetCookieAsync("http://.nicovideo.jp/", cefcookie).Result; App.ViewModelRoot.LogedInInit(); return(SigninStatus.Success); } } //サインイン失敗 return(SigninStatus.Failed); }
//セッションを確立した後に呼ぶ public SigninStatus SignInInternal() { //ニコニコTOPにレスポンスヘッダを要求する HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Head, NicoNicoTop); HttpResponseMessage response = HttpClient.SendAsync(message).Result; //成功したら if(response.StatusCode == HttpStatusCode.OK) { //レスポンスヘッダにユーザーIDが無かったらログイン失敗 if(!response.Headers.Contains("x-niconico-id")) { return SigninStatus.Failed; } //ユーザーIDを取得 UserId = response.Headers.GetValues("x-niconico-id").Single(); //アカウント権限 Authority = (NiconicoAccountAuthority)int.Parse(response.Headers.GetValues("x-niconico-authflag").Single()); //cookieを取得 var cookie = HttpHandler.CookieContainer.GetCookies(new Uri("http://nicovideo.jp/")).Cast<Cookie>() .Where( c => c.Name == "user_session" && c.Path == "/" ).OrderByDescending( c => c.Expires.Ticks ).First(); if(cookie != null && cookie.Expires != null) { //cookieをもとにキーと有効期限を取得 Key = cookie.Value; Expire = cookie.Expires; App.SetCookie(new Uri("http://nicovideo.jp/"), "user_session=" + Key); App.ViewModelRoot.LogedInInit(); return SigninStatus.Success; } } //サインイン失敗 return SigninStatus.Failed; }