BoxKite.Twitter.Authentication.TwitterAuthenticator.StartUserAuthentication C# (CSharp) Метод

StartUserAuthentication() публичный статический Метод

public static StartUserAuthentication ( this session ) : Task
session this
Результат Task
        public static async Task<string> StartUserAuthentication(this IUserSession session)
        {
            if (string.IsNullOrWhiteSpace(session.clientID))
                throw new ArgumentException("ClientID must be specified", session.clientID);

            if (string.IsNullOrWhiteSpace(session.clientSecret))
                throw new ArgumentException("ClientSecret must be specified", session.clientSecret);

            if (session.PlatformAdaptor == null)
                throw new ArgumentException("Need a Platform Adaptor");

            var sinceEpoch = session.GenerateTimestamp();
            var nonce = session.GenerateNoonce();

            var sigBaseStringParams =
                string.Format(
                    "oauth_consumer_key={0}&oauth_nonce={1}&oauth_signature_method=HMAC-SHA1&oauth_timestamp={2}&oauth_version=1.0",
                    session.clientID,
                    nonce,
                    sinceEpoch);

            var sigBaseString = string.Format("POST&{0}&{1}", TwitterApi.RequestTokenUrl().UrlEncode(), sigBaseStringParams.UrlEncode());
            var signature = session.GenerateSignature(session.clientSecret, sigBaseString, null);
            var dataToPost = string.Format(
                    "OAuth realm=\"\", oauth_nonce=\"{0}\", oauth_timestamp=\"{1}\", oauth_consumer_key=\"{2}\", oauth_signature_method=\"HMAC-SHA1\", oauth_version=\"1.0\", oauth_signature=\"{3}\"",
                    nonce,
                    sinceEpoch,
                    session.clientID,
                    signature.UrlEncode());

            var response = await PostData(TwitterApi.RequestTokenUrl(), dataToPost);

            if (string.IsNullOrWhiteSpace(response))
                return null;

            var oAuthToken = "";

            foreach (var splits in response.Split('&').Select(t => t.Split('=')))
            {
                switch (splits[0])
                {
                    case "oauth_token": //these tokens are request tokens, first step before getting access tokens
                        oAuthToken = splits[1];
                        break;
                    case "oauth_token_secret": // not used
//                        var oAuthTokenSecret = splits[1];
                        break;
                    case "oauth_callback_confirmed":
                        break;
                }
            }

            if (!string.IsNullOrWhiteSpace(oAuthToken))
                session.PlatformAdaptor.DisplayAuthInBrowser(TwitterApi.AuthenticateUrl()+ oAuthToken);

            return oAuthToken;
        }