Beispiel #1
0
        public async Task <HttpResponseMessage> ProcessCallback()
        {
            var requestParams      = Request.GetQueryNameValuePairs();
            var oauthToken         = requestParams.Where(p => p.Key.Equals(TwitterOauthUtils.OAuthTokenKey)).FirstOrDefault();
            var oauthTokenVerifier = requestParams.Where(p => p.Key.Equals(TwitterOauthUtils.OAuthVerifierKey)).FirstOrDefault();


            // exchange the oauth token and oauth token verifier for a user access token
            var userAccessInfo = await AccessTokenExchange(oauthToken.Value, oauthTokenVerifier.Value);


            // compute a user access cookie and send the user back to the home page.
            var          cookieValue = TwitterOauthUtils.ConstructUserAccessCookieValue(userAccessInfo);
            UserAuthInfo userAuthInfo;
            UserInfo     userInfo;

            TwitterOauthUtils.ParseUserAccessCookie(cookieValue, out userInfo, out userAuthInfo);
            Program.SetUserAuthInfo(userAuthInfo);

            CookieHeaderValue userAccessCookie = new CookieHeaderValue(UserAccessCookieName, cookieValue);

            userAccessCookie.Path = "/";

            var response = Request.CreateResponse(HttpStatusCode.Moved);

            response.Headers.AddCookies(new CookieHeaderValue[] { userAccessCookie });
            response.Headers.Location = new System.Uri(AppHomeRoute);

            return(response);
        }
        public Task <HttpResponseMessage> Get()
        {
            UserInfo     userInfo     = null;
            UserAuthInfo userAuthInfo = null;
            var          cookie       = Request.Headers.GetCookies(TwitterSignInController.UserAccessCookieName).FirstOrDefault();

            if (cookie != null)
            {
                TwitterOauthUtils.ParseUserAccessCookie(cookie[TwitterSignInController.UserAccessCookieName].Value, out userInfo, out userAuthInfo);
            }

            var response = Request.CreateResponse(HttpStatusCode.OK);

            if (userInfo != null)
            {
                response.Content = new StringContent(
                    JsonConvert.SerializeObject(userInfo),
                    Encoding.UTF8,
                    "application/json");
            }

            return(Task.FromResult(response));
        }