public static async Task <String> GetUserInfo(TwitterAccessToken accessToken, String verifier)
        {
            String result = String.Empty;

            try
            {
                string nonce     = OAuthUtil.GetNonce();
                string timeStamp = OAuthUtil.GetTimeStamp();
                String url       = "https://api.twitter.com/1.1/account/verify_credentials.json";

                // prepare base string parameters, include oauth_token, oauth_verifier
                var baseStringParams = new Dictionary <string, string> {
                    { "oauth_consumer_key", ConsumerKey },
                    { "oauth_nonce", nonce },
                    { "oauth_signature_method", "HMAC-SHA1" },
                    { "oauth_timestamp", timeStamp },
                    { "oauth_token", accessToken.oauth_token },
                    { "oauth_verifier", verifier },
                    { "oauth_version", "1.0" }
                };

                string paramsBaseString = baseStringParams
                                          .OrderBy(kv => kv.Key)
                                          .Select(kv => kv.Key + "=" + kv.Value)
                                          .Aggregate((i, j) => i + "&" + j);

                string sigBaseString = "GET&";
                // signature base string uses base url
                sigBaseString += Uri.EscapeDataString(url) + "&" + Uri.EscapeDataString(paramsBaseString);

                // get signature by comsumer secret and oauth_token_secret
                string signature = OAuthUtil.GetSignature(sigBaseString, ConsumerSecret, accessToken.oauth_token_secret);

                // build header
                string data = "oauth_consumer_key=\"" + ConsumerKey +
                              "\", oauth_nonce=\"" + nonce +
                              "\", oauth_signature=\"" + Uri.EscapeDataString(signature) +
                              "\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"" + timeStamp +
                              "\", oauth_token=\"" + accessToken.oauth_token +
                              "\", oauth_verifier=\"" + verifier +
                              "\", oauth_version=\"1.0\"";

                HttpClient         httpClient = new HttpClient();
                HttpRequestMessage requestMsg = new HttpRequestMessage();
                requestMsg.Method                = new HttpMethod("GET");
                requestMsg.RequestUri            = new Uri(url);
                requestMsg.Headers.Authorization = new HttpCredentialsHeaderValue("OAuth", data);
                var response = await httpClient.SendRequestAsync(requestMsg);

                result = await response.Content.ReadAsStringAsync();
            }
            catch (Exception)
            {
                throw;
            }
            return(result);
        }
        public static async Task<String> GetUserInfo(TwitterAccessToken accessToken, String verifier)
        {
            String result = String.Empty;
            try
            {
                string nonce = OAuthUtil.GetNonce();
                string timeStamp = OAuthUtil.GetTimeStamp();
                String url = "https://api.twitter.com/1.1/account/verify_credentials.json";

                // prepare base string parameters, include oauth_token, oauth_verifier
                var baseStringParams = new Dictionary<string, string>{
                                        {"oauth_consumer_key", ConsumerKey},
                                        {"oauth_nonce", nonce},
                                        {"oauth_signature_method", "HMAC-SHA1"},
                                        {"oauth_timestamp", timeStamp},
                                        {"oauth_token", accessToken.oauth_token},
                                        {"oauth_verifier", verifier},
                                        {"oauth_version", "1.0"} };

                string paramsBaseString = baseStringParams
                                           .OrderBy(kv => kv.Key)
                                           .Select(kv => kv.Key + "=" + kv.Value)
                                           .Aggregate((i, j) => i + "&" + j);

                string sigBaseString = "GET&";
                // signature base string uses base url
                sigBaseString += Uri.EscapeDataString(url) + "&" + Uri.EscapeDataString(paramsBaseString);

                // get signature by comsumer secret and oauth_token_secret
                string signature = OAuthUtil.GetSignature(sigBaseString, ConsumerSecret, accessToken.oauth_token_secret);

                // build header
                string data = "oauth_consumer_key=\"" + ConsumerKey +
                              "\", oauth_nonce=\"" + nonce +
                              "\", oauth_signature=\"" + Uri.EscapeDataString(signature) +
                              "\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"" + timeStamp +
                              "\", oauth_token=\"" + accessToken.oauth_token +
                              "\", oauth_verifier=\"" + verifier +
                              "\", oauth_version=\"1.0\"";

                HttpClient httpClient = new HttpClient();
                HttpRequestMessage requestMsg = new HttpRequestMessage();
                requestMsg.Method = new HttpMethod("GET");
                requestMsg.RequestUri = new Uri(url);
                requestMsg.Headers.Authorization = new HttpCredentialsHeaderValue("OAuth", data);
                var response = await httpClient.SendRequestAsync(requestMsg);
                result = await response.Content.ReadAsStringAsync();
            }
            catch (Exception)
            {
                throw;
            }
            return result;
        }
        public static async Task<TwitterAccessToken> GetAccessToken(String token, String verifier)
        {
            String TwitterUrl = "https://api.twitter.com/oauth/access_token";

            string timeStamp = OAuthUtil.GetTimeStamp();
            string nonce = OAuthUtil.GetNonce();

            String SigBaseStringParams = "oauth_consumer_key=" + ConsumerKey;
            SigBaseStringParams += "&" + "oauth_nonce=" + nonce;
            SigBaseStringParams += "&" + "oauth_signature_method=HMAC-SHA1";
            SigBaseStringParams += "&" + "oauth_timestamp=" + timeStamp;
            SigBaseStringParams += "&" + "oauth_token=" + token;
            SigBaseStringParams += "&" + "oauth_version=1.0";
            String SigBaseString = "POST&";
            SigBaseString += Uri.EscapeDataString(TwitterUrl) + "&" + Uri.EscapeDataString(SigBaseStringParams);

            String Signature = OAuthUtil.GetSignature(SigBaseString, ConsumerSecret);

            HttpStringContent httpContent = new HttpStringContent("oauth_verifier=" + verifier, Windows.Storage.Streams.UnicodeEncoding.Utf8);
            httpContent.Headers.ContentType = HttpMediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
            string authorizationHeaderParams = "oauth_consumer_key=\"" + ConsumerKey + "\", oauth_nonce=\"" + nonce +
                "\", oauth_signature_method=\"HMAC-SHA1\", oauth_signature=\"" + Uri.EscapeDataString(Signature) +
                "\", oauth_timestamp=\"" + timeStamp + "\", oauth_token=\"" + Uri.EscapeDataString(token) +
                "\", oauth_version=\"1.0\"";

            HttpClient httpClient = new HttpClient();

            httpClient.DefaultRequestHeaders.Authorization = new HttpCredentialsHeaderValue("OAuth", authorizationHeaderParams);
            var httpResponseMessage = await httpClient.PostAsync(new Uri(TwitterUrl), httpContent);
            string response = await httpResponseMessage.Content.ReadAsStringAsync();

            String[] Tokens = response.Split('&');
            string oauth_token_secret = null;
            string access_token = null;
            string screen_name = null;
            String user_id = null;
            TwitterAccessToken user = new TwitterAccessToken();
            for (int i = 0; i < Tokens.Length; i++)
            {
                String[] splits = Tokens[i].Split('=');
                switch (splits[0])
                {
                    case "screen_name":
                        screen_name = splits[1];
                        break;
                    case "user_id":
                        user_id = splits[1];
                        break;
                    case "oauth_token":
                        access_token = splits[1];
                        break;
                    case "oauth_token_secret":
                        oauth_token_secret = splits[1];
                        break;
                }
            }
            user.user_id = user_id;
            user.screen_name = screen_name;
            user.oauth_token = access_token;
            user.oauth_token_secret = oauth_token_secret;
            return user;
        }
        public static async Task <TwitterAccessToken> GetAccessToken(String token, String verifier)
        {
            String TwitterUrl = "https://api.twitter.com/oauth/access_token";

            string timeStamp = OAuthUtil.GetTimeStamp();
            string nonce     = OAuthUtil.GetNonce();

            String SigBaseStringParams = "oauth_consumer_key=" + ConsumerKey;

            SigBaseStringParams += "&" + "oauth_nonce=" + nonce;
            SigBaseStringParams += "&" + "oauth_signature_method=HMAC-SHA1";
            SigBaseStringParams += "&" + "oauth_timestamp=" + timeStamp;
            SigBaseStringParams += "&" + "oauth_token=" + token;
            SigBaseStringParams += "&" + "oauth_version=1.0";
            String SigBaseString = "POST&";

            SigBaseString += Uri.EscapeDataString(TwitterUrl) + "&" + Uri.EscapeDataString(SigBaseStringParams);

            String Signature = OAuthUtil.GetSignature(SigBaseString, ConsumerSecret);

            HttpStringContent httpContent = new HttpStringContent("oauth_verifier=" + verifier, Windows.Storage.Streams.UnicodeEncoding.Utf8);

            httpContent.Headers.ContentType = HttpMediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
            string authorizationHeaderParams = "oauth_consumer_key=\"" + ConsumerKey + "\", oauth_nonce=\"" + nonce +
                                               "\", oauth_signature_method=\"HMAC-SHA1\", oauth_signature=\"" + Uri.EscapeDataString(Signature) +
                                               "\", oauth_timestamp=\"" + timeStamp + "\", oauth_token=\"" + Uri.EscapeDataString(token) +
                                               "\", oauth_version=\"1.0\"";

            HttpClient httpClient = new HttpClient();

            httpClient.DefaultRequestHeaders.Authorization = new HttpCredentialsHeaderValue("OAuth", authorizationHeaderParams);
            var httpResponseMessage = await httpClient.PostAsync(new Uri(TwitterUrl), httpContent);

            string response = await httpResponseMessage.Content.ReadAsStringAsync();

            String[]           Tokens             = response.Split('&');
            string             oauth_token_secret = null;
            string             access_token       = null;
            string             screen_name        = null;
            String             user_id            = null;
            TwitterAccessToken user = new TwitterAccessToken();

            for (int i = 0; i < Tokens.Length; i++)
            {
                String[] splits = Tokens[i].Split('=');
                switch (splits[0])
                {
                case "screen_name":
                    screen_name = splits[1];
                    break;

                case "user_id":
                    user_id = splits[1];
                    break;

                case "oauth_token":
                    access_token = splits[1];
                    break;

                case "oauth_token_secret":
                    oauth_token_secret = splits[1];
                    break;
                }
            }
            user.user_id            = user_id;
            user.screen_name        = screen_name;
            user.oauth_token        = access_token;
            user.oauth_token_secret = oauth_token_secret;
            return(user);
        }