@Override public AcquisitionMethod acquisitionMethod() { return new AcquisitionMethod.Builder().label(labelFor(id)).icon(iconFor(id)).type(Type.OAUTH1) .description(descriptionFor(id)).build(); }
@Override public Connection applyTo(final Connection connection, final CredentialFlowState givenFlowState) { final OAuth1CredentialFlowState flowState = flowState(givenFlowState); return applicator.applyTo(connection, flowState.getAccessToken()); }
@Override public CredentialFlowState prepare(final String connectorId, final URI baseUrl, final URI returnUrl) { final OAuth1CredentialFlowState.Builder flowState = new OAuth1CredentialFlowState.Builder().returnUrl(returnUrl) .providerId(id); final OAuth1Operations oauthOperations = connectionFactory.getOAuthOperations(); final OAuth1Parameters parameters = new OAuth1Parameters(); final String stateKey = UUID.randomUUID().toString(); flowState.key(stateKey); final OAuthToken oAuthToken; final OAuth1Version oAuthVersion = oauthOperations.getVersion(); if (oAuthVersion == OAuth1Version.CORE_10) { parameters.setCallbackUrl(callbackUrlFor(baseUrl, EMPTY)); oAuthToken = oauthOperations.fetchRequestToken(null, null); } else if (oAuthVersion == OAuth1Version.CORE_10_REVISION_A) { oAuthToken = oauthOperations.fetchRequestToken(callbackUrlFor(baseUrl, EMPTY), null); } else { throw new IllegalStateException("Unsupported OAuth 1 version: " + oAuthVersion); } flowState.token(oAuthToken); final String redirectUrl = oauthOperations.buildAuthorizeUrl(oAuthToken.getValue(), parameters); flowState.redirectUrl(redirectUrl); flowState.connectorId(connectorId); return flowState.build(); }
/* default */ static CredentialProvider createCredentialProvider(final SocialProperties properties) { final TwitterConnectionFactory twitter = new TwitterConnectionFactory(properties.getAppId(), properties.getAppSecret()); final OAuth1Applicator applicator = new OAuth1Applicator(properties); applicator.setConsumerKeyProperty("consumerKey"); applicator.setConsumerSecretProperty("consumerSecret"); applicator.setAccessTokenSecretProperty("accessTokenSecret"); applicator.setAccessTokenValueProperty("accessToken"); return new OAuth1CredentialProvider<>("twitter", twitter, applicator); }
@Override public CredentialFlowState finish(final CredentialFlowState givenFlowState, final URI baseUrl) { final OAuth1CredentialFlowState flowState = flowState(givenFlowState); final AuthorizedRequestToken requestToken = new AuthorizedRequestToken(flowState.getToken(), flowState.getVerifier()); final OAuthToken accessToken = connectionFactory.getOAuthOperations().exchangeForAccessToken(requestToken, null); return new OAuth1CredentialFlowState.Builder().createFrom(flowState).accessToken(accessToken).build(); }