// This is utility method used to transform Google Drive token to our own object.
        private DriveToken GetTokenFromContent(string content)
        {
            JavaScriptSerializer ser = new JavaScriptSerializer();
            var        tokenArray    = ser.Deserialize <Dictionary <string, string> >(content);
            DriveToken token         = new DriveToken();

            foreach (var tokenKey in tokenArray.Keys)
            {
                switch (tokenKey)
                {
                case "access_token":
                    token.AccessToken = tokenArray[tokenKey];
                    break;

                case "token_type":
                    token.TokenType = tokenArray[tokenKey];
                    break;

                case "expires_in":
                    token.ExpiresIn = tokenArray[tokenKey];
                    break;

                case "refresh_token":
                    token.RefreshToken = tokenArray[tokenKey];
                    break;
                }
            }


            return(token);
        }
        // Step 3: Optional: This step is used to get refresh token if token expires.
        public DriveToken GetRefreshToken()
        {
            Dictionary <string, string> parameters = new Dictionary <string, string>();

            parameters.Add(DriveRestConstants.ClientSecretKey, ClientSecret);
            parameters.Add(DriveRestConstants.GrantTypeKey, DriveRestConstants.RefreshTokenKey);
            parameters.Add(DriveRestConstants.RefreshTokenKey, Token.RefreshToken);
            parameters.Add(DriveRestConstants.ClientIDKey, ClientID);

            //parameters.Add(DriveRestConstants.RedirectURIKey, RedirectURL);



            WarmupRequest(Method.POST, DriveRestConstants.AccountHostURL, DriveRestConstants.GetTokenRequestURL
                          , parameters, null);

            IRestResponse response = restClient.Execute(restRequest);
            var           content  = response.Content; // raw content as string

            //JavaScriptSerializer ser = new JavaScriptSerializer();
            DriveToken token = GetTokenFromContent(content);//(DriveToken)ser.DeserializeObject(content);

            Token = token;
            return(token);
        }
        // Step 2nd: This is second step to get the Token when control is handed over from dropbox to our app.
        public DriveToken GetTokenfromCode(string code)
        {
            Dictionary<string,string> parameters = new Dictionary<string,string>();

             parameters.Add(DriveRestConstants.CodeKey, code);

                parameters.Add(DriveRestConstants.RedirectURIKey, RedirectURL);
                parameters.Add(DriveRestConstants.ClientIDKey, ClientID);
                parameters.Add(DriveRestConstants.ClientSecretKey, ClientSecret);
                parameters.Add(DriveRestConstants.GrantTypeKey, DriveRestConstants.GrantTypeAuthorizationCode);

            WarmupRequest(Method.POST,DriveRestConstants.AccountHostURL,DriveRestConstants.GetTokenRequestURL
                ,parameters,null);

            IRestResponse response = restClient.Execute(restRequest);
            var content = response.Content; // raw content as string

            //JavaScriptSerializer ser = new JavaScriptSerializer();
            DriveToken token = GetTokenFromContent(content); //(DriveToken)ser.DeserializeObject(content);
            Token = token;
            return token;
        }
        // This is utility method used to transform Google Drive token to our own object.
        private DriveToken GetTokenFromContent(string content)
        {
            JavaScriptSerializer ser = new JavaScriptSerializer();
            var tokenArray = ser.Deserialize<Dictionary<string, string>>(content);
            DriveToken token = new DriveToken();

            foreach (var tokenKey in tokenArray.Keys)
            {
                switch (tokenKey)
                {
                    case "access_token":
                        token.AccessToken = tokenArray[tokenKey];
                        break;
                    case "token_type":
                        token.TokenType = tokenArray[tokenKey];
                        break;
                    case "expires_in":
                        token.ExpiresIn = tokenArray[tokenKey];
                        break;
                    case "refresh_token":
                        token.RefreshToken = tokenArray[tokenKey];
                        break;
                }
 
            }


            return token;
        }