/// <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; }
/// <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); }
/// <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); }
/// <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)); }
/// <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()) { }