/* default */ static CredentialProvider createCredentialProvider(final SocialProperties properties) { final SalesforceConnectionFactory connectionFactory = createConnectionFactory(properties); return new OAuth2CredentialProvider<>("salesforce", connectionFactory, new SalesforceApplicator(connectionFactory, properties)); }
@Override public CredentialFlowState finish(final CredentialFlowState givenFlowState, final URI baseUrl) { final OAuth2CredentialFlowState flowState = flowState(givenFlowState); final AccessGrant accessGrant = connectionFactory.getOAuthOperations().exchangeForAccess(flowState.getCode(), callbackUrlFor(baseUrl, EMPTY), null); return new OAuth2CredentialFlowState.Builder().createFrom(flowState).accessGrant(accessGrant).build(); }
@Override public AcquisitionMethod acquisitionMethod() { return new AcquisitionMethod.Builder().label(labelFor(id)).icon(iconFor(id)).type(Type.OAUTH2) .description(descriptionFor(id)).build(); }
@Override public Connection applyTo(final Connection connection, final CredentialFlowState givenFlowState) { final OAuth2CredentialFlowState flowState = flowState(givenFlowState); return applicator.applyTo(connection, flowState.getAccessGrant()); }
@Override public CredentialFlowState prepare(final String connectorId, final URI baseUrl, final URI returnUrl) { final OAuth2CredentialFlowState.Builder flowState = new OAuth2CredentialFlowState.Builder().returnUrl(returnUrl) .providerId(id); final OAuth2Parameters parameters = new OAuth2Parameters(); final String callbackUrl = callbackUrlFor(baseUrl, EMPTY); parameters.setRedirectUri(callbackUrl); final String scope = connectionFactory.getScope(); parameters.setScope(scope); final String stateKey = connectionFactory.generateState(); flowState.key(stateKey); parameters.add("state", stateKey); final OAuth2Operations oauthOperations = connectionFactory.getOAuthOperations(); final String redirectUrl = oauthOperations.buildAuthorizeUrl(parameters); flowState.redirectUrl(redirectUrl); flowState.connectorId(connectorId); return flowState.build(); }
@Override public CredentialProvider create(final SocialProperties properties) { final OAuth2ConnectorProperties oauth2Properties = (OAuth2ConnectorProperties) properties; final String appId = oauth2Properties.getAppId(); final String appSecret = oauth2Properties.getAppSecret(); final String authorizationUrl = oauth2Properties.getAuthorizationUrl(); final String authenticationUrl = oauth2Properties.getAuthenticationUrl(); final String accessTokenUrl = oauth2Properties.getAccessTokenUrl(); final boolean useParametersForClientCredentials = oauth2Properties.isUseParametersForClientCredentials(); final TokenStrategy tokenStrategy = oauth2Properties.getTokenStrategy(); final String scope = oauth2Properties.getScope(); final OAuth2ServiceProvider<RestOperations> serviceProvider = new GenericOAuth2ServiceProvider(appId, appSecret, authorizationUrl, authenticationUrl, accessTokenUrl, useParametersForClientCredentials, tokenStrategy); final OAuth2ConnectionFactory<RestOperations> connectionFactory = new OAuth2ConnectionFactory<>("oauth2", serviceProvider, null); connectionFactory.setScope(scope); final OAuth2Applicator applicator = new OAuth2Applicator(properties); applicator.setAccessTokenProperty("accessToken"); return new OAuth2CredentialProvider<>("oauth2", connectionFactory, applicator); }