Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="LinkedInDataProvider"/> class.
        /// Constructor.
        /// </summary>
        /// <param name="tokens">OAuth tokens for request.</param>
        /// <param name="requiredPermissions">Required permissions for the session.</param>
        /// <param name="authentication">Authentication result interface.</param>
        /// <param name="passwordManager">Password Manager interface, store the password.</param>
        /// <param name="storageManager">Storage Manager interface.</param>
        public LinkedInDataProvider(LinkedInOAuthTokens tokens, LinkedInPermissions requiredPermissions, IAuthenticationBroker authentication, IPasswordManager passwordManager, IStorageManager storageManager)
        {
            if (string.IsNullOrEmpty(tokens.ClientSecret))
            {
                throw new ArgumentException("Missing client secret key");
            }

            if (string.IsNullOrEmpty(tokens.ClientId))
            {
                throw new ArgumentException("Missing client ID");
            }

            if (string.IsNullOrEmpty(tokens.CallbackUri))
            {
                throw new ArgumentException("Missing callback uri");
            }

            if (!Enum.IsDefined(typeof(LinkedInPermissions), requiredPermissions))
            {
                throw new ArgumentException("Error retrieving required permissions");
            }

            Tokens = tokens;
            RequiredPermissions = requiredPermissions;
            _authentication     = authentication ?? throw new ArgumentException("Invalid AuthenticationBroker");
            _storageManager     = storageManager ?? throw new ArgumentException("Invalid StorageManager");
            _passwordManager    = passwordManager ?? throw new ArgumentException("Invalid PasswordManager");
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="LinkedInDataProvider"/> class.
        /// Constructor.
        /// </summary>
        /// <param name="tokens">OAuth tokens for request.</param>
        /// <param name="requiredPermissions">Required permissions for the session.</param>
        public LinkedInDataProvider(LinkedInOAuthTokens tokens, LinkedInPermissions requiredPermissions)
        {
            Tokens = tokens;
            RequiredPermissions = requiredPermissions;

            _vault = new PasswordVault();
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="LinkedInDataProvider"/> class.
        /// Constructor.
        /// </summary>
        /// <param name="tokens">OAuth tokens for request.</param>
        /// <param name="requiredPermissions">Required permissions for the session.</param>
        /// <param name="authentication">Authentication result interface.</param>
        /// <param name="passwordManager">Password Manager interface, store the password.</param>
        /// <param name="storageManager">Storage Manager interface.</param>
        public LinkedInDataProvider(LinkedInOAuthTokens tokens, LinkedInPermissions requiredPermissions, IAuthenticationBroker authentication, IPasswordManager passwordManager, IStorageManager storageManager)
        {
            if (string.IsNullOrEmpty(tokens.ClientSecret))
            {
                throw new ArgumentException("Missing client secret key");
            }

            if (string.IsNullOrEmpty(tokens.ClientId))
            {
                throw new ArgumentException("Missing client ID");
            }

            if (string.IsNullOrEmpty(tokens.CallbackUri))
            {
                throw new ArgumentException("Missing callback uri");
            }

            // Check if its a valid combination of LinkedInPermissions
            if ((~(int)LinkedInPermissionsHelpers.AllPermissions & (int)requiredPermissions) != 0)
            {
                throw new ArgumentException("Error retrieving required permissions");
            }

            Tokens = tokens;
            RequiredPermissions = requiredPermissions;
            _authentication     = authentication ?? throw new ArgumentException("Invalid AuthenticationBroker");
            _storageManager     = storageManager ?? throw new ArgumentException("Invalid StorageManager");
            _passwordManager    = passwordManager ?? throw new ArgumentException("Invalid PasswordManager");
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="LinkedInDataProvider"/> class.
 /// Constructor.
 /// </summary>
 /// <param name="tokens">OAuth tokens for request.</param>
 /// <param name="requiredPermissions">Required permissions for the session.</param>
 public LinkedInDataProvider(LinkedInOAuthTokens tokens, LinkedInPermissions requiredPermissions)
 {
     Tokens = tokens;
     RequiredPermissions = requiredPermissions;
     _authentication     = new UwpAuthenticationBroker();
     _storageManager     = new UwpStorageManager();
     _passwordManager    = new UwpPasswordManager();
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="LinkedInDataProvider"/> class.
 /// Constructor.
 /// </summary>
 /// <param name="tokens">OAuth tokens for request.</param>
 /// <param name="requiredPermissions">Required permissions for the session.</param>
 /// <param name="authentication">Authentication result interface.</param>
 /// <param name="passwordManager">Password Manager interface, store the password.</param>
 /// <param name="storageManager">Storage Manager interface.</param>
 public LinkedInDataProvider(LinkedInOAuthTokens tokens, LinkedInPermissions requiredPermissions, IAuthenticationBroker authentication, IPasswordManager passwordManager, IStorageManager storageManager)
 {
     Tokens = tokens;
     RequiredPermissions = requiredPermissions;
     _authentication     = authentication;
     _storageManager     = storageManager;
     _passwordManager    = passwordManager;
 }
Exemple #6
0
        /// <summary>
        /// Initialize underlying provider with relevent token information.
        /// </summary>
        /// <param name="oAuthTokens">Token instance.</param>
        /// <param name="authentication">Authentication result interface.</param>
        /// <param name="passwordManager">Password Manager interface, store the password.</param>
        /// <param name="storageManager">Storage Manager interface.</param>
        /// <param name="requiredPermissions">Scope / permissions app requires user to sign up for.</param>
        /// <returns>Success or failure.</returns>
        public bool Initialize(LinkedInOAuthTokens oAuthTokens, IAuthenticationBroker authentication, IPasswordManager passwordManager, IStorageManager storageManager, LinkedInPermissions requiredPermissions = LinkedInPermissions.NotSet)
        {
            _oAuthTokens          = oAuthTokens ?? throw new ArgumentNullException(nameof(oAuthTokens));
            _authenticationBroker = authentication ?? throw new ArgumentNullException(nameof(authentication));
            _storageManager       = storageManager ?? throw new ArgumentNullException(nameof(storageManager));
            _passwordManager      = passwordManager ?? throw new ArgumentNullException(nameof(passwordManager));

            _requiredPermissions = requiredPermissions;

            Provider.RequiredPermissions = requiredPermissions;
            Provider.Tokens = oAuthTokens;

            _isInitialized = true;

            return(true);
        }
Exemple #7
0
        /// <summary>
        /// Initialize underlying provider with relevent token information.
        /// </summary>
        /// <param name="oAuthTokens">Token instance.</param>
        /// <param name="requiredPermissions">Scope / permissions app requires user to sign up for.</param>
        /// <returns>Success or failure.</returns>
        public bool Initialize(LinkedInOAuthTokens oAuthTokens, LinkedInPermissions requiredPermissions = LinkedInPermissions.NotSet)
        {
            if (oAuthTokens == null)
            {
                throw new ArgumentNullException(nameof(oAuthTokens));
            }

            this._oAuthTokens         = oAuthTokens;
            this._requiredPermissions = requiredPermissions;

            Provider.RequiredPermissions = requiredPermissions;
            Provider.Tokens = oAuthTokens;

            _isInitialized = true;

            return(true);
        }
        private string ConvertPermissionsToEncodedScopeString(LinkedInPermissions requiredPermissions)
        {
            StringBuilder scope = new StringBuilder();

            foreach (LinkedInPermissions value in Enum.GetValues(typeof(LinkedInPermissions)))
            {
                if ((requiredPermissions & value) != LinkedInPermissions.NotSet)
                {
                    var name = value.ToString().ToLower();
                    name = name.Replace("readwrite", "rw_");
                    name = name.Replace("read", "r_");
                    name = name.Replace("write", "w_");
                    name = name.Replace("companyadmin", "company_admin");

                    scope.Append($"{name} ");
                }
            }

            return("scope=" + Uri.EscapeDataString(scope.ToString()));
        }
        private async Task <string> GetAuthorizeCodeAsync(LinkedInOAuthTokens tokens, LinkedInPermissions permissions)
        {
            string scopes = ConvertPermissionsToEncodedScopeString(permissions);

            var url = $"{_oAuthBaseUrl}authorization?response_type=code"
                      + "&client_id=" + tokens.ClientId
                      + "&state=STATE"
                      + "&redirect_uri=" + Uri.EscapeDataString(tokens.CallbackUri)
                      + "&" + scopes;

            var startUri = new Uri(url);
            var endUri   = new Uri(tokens.CallbackUri);

            WebAuthenticationResult result = await WebAuthenticationBroker.AuthenticateAsync(
                WebAuthenticationOptions.None,
                startUri,
                endUri);

            switch (result.ResponseStatus)
            {
            case WebAuthenticationStatus.Success:
            {
                var response = result.ResponseData;
                IDictionary <string, string> dictionary = new Dictionary <string, string>();
                var split = response.Split('?');
                foreach (var keyValue in split[split.Length - 1].Split('&'))
                {
                    var keyValueSplit = keyValue.Split('=');
                    if (keyValueSplit.Length == 2)
                    {
                        dictionary.Add(keyValueSplit[0], keyValueSplit[1]);
                    }
                }

                return(dictionary["code"]);
            }

            case WebAuthenticationStatus.ErrorHttp:
                Debug.WriteLine("WAB failed, message={0}", result.ResponseErrorDetail.ToString());
                return(string.Empty);

            case WebAuthenticationStatus.UserCancel:
                Debug.WriteLine("WAB user aborted.");
                return(string.Empty);
            }

            return(string.Empty);
        }
Exemple #10
0
 /// <summary>
 /// Initialize underlying provider with relevent token information for Uwp.
 /// </summary>
 /// <param name="oAuthTokens">Token instance.</param>
 /// <param name="requiredPermissions">Scope / permissions app requires user to sign up for.</param>
 /// <returns>Success or failure.</returns>
 public bool Initialize(LinkedInOAuthTokens oAuthTokens, LinkedInPermissions requiredPermissions = LinkedInPermissions.NotSet)
 {
     return(Initialize(oAuthTokens, new NetFrameworkAuthenticationBroker(), new NetFrameworkPasswordManager(), new NetFrameworkStorageManager(), requiredPermissions));
 }
Exemple #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="LinkedInDataProvider"/> class.
 /// Constructor.
 /// </summary>
 /// <param name="tokens">OAuth tokens for request.</param>
 /// <param name="requiredPermissions">Required permissions for the session.</param>
 public LinkedInDataProvider(LinkedInOAuthTokens tokens, LinkedInPermissions requiredPermissions)
     : this(tokens, requiredPermissions, new NetFrameworkAuthenticationBroker(), new NetFrameworkPasswordManager(), new NetFrameworkStorageManager())
 {
 }