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

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

public static ConfirmPin ( this session, string pinAuthorizationCode, string oAuthToken ) : Task
session this
pinAuthorizationCode string
oAuthToken string
Результат Task
        public static async Task<TwitterCredentials> ConfirmPin(this IUserSession session, string pinAuthorizationCode, string oAuthToken)
        {
            if (string.IsNullOrWhiteSpace(pinAuthorizationCode))
                throw new ArgumentException("pin AuthorizationCode must be specified", pinAuthorizationCode);

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

            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_verifier=\"{3}\", oauth_token=\"{4}\"",
                    nonce,
                    sinceEpoch,
                    session.clientID,
                    pinAuthorizationCode,
                    oAuthToken);

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

            if (string.IsNullOrWhiteSpace(response))
                return TwitterCredentials.Null; //oops something wrong here

            var accessToken = "";
            var accessTokenSecret = "";
            var userId = "";
            var screenName = "";

            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
                        accessToken = splits[1];
                        break;
                    case "oauth_token_secret":
                        accessTokenSecret = splits[1];
                        break;
                    case "user_id":
                        userId = splits[1];
                        break;
                    case "screen_name":
                        screenName = splits[1];
                        break;
                }
            }

            if (accessToken != null && accessTokenSecret != null && userId != null && screenName != null)
            {
                if (await session.StartApplicationOnlyAuth()) 
                {
                    var twitterCreds = new TwitterCredentials()
                    {
                        ConsumerKey = session.clientID,
                        ConsumerSecret = session.clientSecret,
                        BearerToken = session.bearerToken,
                        ScreenName = screenName,
                        Token = accessToken,
                        TokenSecret = accessTokenSecret,
                        UserID = Int64.Parse(userId),
                        Valid = true
                    };
                    session.IsActive = true;
                    return twitterCreds;
                }
            }
            return TwitterCredentials.Null;
        }