/// <summary>
        /// Return an OAuth token.
        /// DO NOT USE IN APP.
        /// </summary>
        /// <returns>OAuth token.</returns>
        /// <param name="username">Username.</param>
        /// <param name="password">Password.</param>
        /// <param name="scope">Scope.</param>
        /// <param name="token">Token.</param>
        public async Task <Token> GetOAuthToken(string clientId, string clientSecret, string username, string password, OAuthAccessScope scope, CancellationToken?token = null)
        {
            var data = new Dictionary <string, string> {
                { "client_id", clientId },
                { "client_secret", clientSecret },
                { "scope", scope.Value },
                { "grant_type", "password" },
                { "username", username },
                { "password", password }
            };
            var response = await apiBase.PostAsync("/oauth/token", data, null, token);

            return(await response
                   .Content.ReadAsStringAsync()
                   .ContinueWith((task) => JsonConvert.DeserializeObject <Token>(task.Result)));
        }
        /// <summary>
        /// Creates the app on Mastodon instance.
        /// </summary>
        /// <returns>MastodonApp.</returns>
        /// <param name="clientName">Client name.</param>
        /// <param name="redirectUris">Redirect uris.</param>
        /// <param name="scope">Scope.</param>
        /// <param name="token">Token.</param>
        public async Task <MastodonApp> CreateApp(string clientName, Uri redirectUris, OAuthAccessScope scope, CancellationToken?token = null)
        {
            var data = new Dictionary <string, string> {
                { "client_name", clientName },
                { "redirect_uris", redirectUris.AbsoluteUri },
                { "scope", scope.Value },
            };
            var response = await apiBase.PostAsync("/api/v1/apps", data, null, token);

            return(await response
                   .Content.ReadAsStringAsync()
                   .ContinueWith((task) => JsonConvert.DeserializeObject <MastodonApp>(task.Result)));
        }