Exemplo n.º 1
0
        //セッションを確立した後に呼ぶ
        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);
        }
Exemplo n.º 2
0
		//セッションを確立した後に呼ぶ
		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;
		}