@Override public String getSocialMediaName() { return config.getSocialMediaName(); }
@Override public OAuthAppSettingsBuilder readFromSettings(OAuthAppSettings settings) { apiKey(settings.getApiKey()). apiSecret(settings.getApiSecret()). callback(settings.getCallback()). scope(settings.getScope()). qualifier(settings.getQualifier()).name(settings.getSocialMediaName()); return this; }
@Override public Token getAccessToken(Token requestToken, Verifier verifier) { OAuthRequest request = new OAuthRequestImpl(api.getAccessTokenVerb(), api.getAccessTokenEndpoint()); request.addBodyParameter(AgoravaConstants.CLIENT_ID, config.getApiKey()); request.addBodyParameter(AgoravaConstants.CLIENT_SECRET, config.getApiSecret()); request.addBodyParameter(AgoravaConstants.CODE, verifier.getValue()); request.addBodyParameter(AgoravaConstants.REDIRECT_URI, config.getCallback()); request.addBodyParameter(AgoravaConstants.GRANT_TYPE, "authorization_code"); if (config.hasScope()) request.addBodyParameter(AgoravaConstants.SCOPE, config.getScope()); Response response = request.send(); //todo:should check return code and launch ResponseException if it's not 200 return api.getAccessTokenExtractor().extract(response.getBody()); }
@Override public OAuthAppSettings tune(OAuthAppSettings toTune) { return new SimpleOAuthAppSettingsBuilder() .readFromSettings(toTune) .callback(new FacesUrlTransformer(toTune.getCallback()) .appendParamIfNecessary(AgoravaConstants.SESSIONID_PARAM, session.getId()).getUrl()) .build(); } }
@Override public OAuthAppSettings produce(CreationalContext<OAuthAppSettings> ctx) { OAuthAppSettings settings = oldProducer.produce(ctx); OAuthAppSettings newSettings = new SimpleOAuthAppSettingsBuilder().readFromSettings(settings). qualifier(qual). name(AgoravaContext.getQualifierToService().get(qual)).build(); ctx.push(newSettings); return newSettings; }
private void addOAuthParams(OAuthRequest request, Token token) { request.addOAuthParameter(AgoravaConstants.TIMESTAMP, api.getTimestampService().getTimestampInSeconds()); request.addOAuthParameter(AgoravaConstants.NONCE, api.getTimestampService().getNonce()); request.addOAuthParameter(AgoravaConstants.CONSUMER_KEY, config.getApiKey()); request.addOAuthParameter(AgoravaConstants.SIGN_METHOD, api.getSignatureService().getSignatureMethod()); request.addOAuthParameter(AgoravaConstants.VERSION, getVersion().getLabel()); if (config.hasScope()) request.addOAuthParameter(AgoravaConstants.SCOPE, config.getScope()); request.addOAuthParameter(AgoravaConstants.SIGNATURE, getSignature(request, token)); LOGGER.fine("appended additional OAuth parameters: " + MapUtils.toString(request.getOauthParameters())); }
@Override public OAuthSession getSession() { return OAuthLifeCycleService.resolveSessionForQualifier(config.getQualifier()); }
public Token getRequestToken(RequestTuner tuner) { OAuthAppSettings config = getTunedOAuthAppSettings(); LOGGER.fine("obtaining request token from " + api.getRequestTokenEndpoint()); OAuthRequest request = requestFactory(api.getRequestTokenVerb(), api.getRequestTokenEndpoint()); LOGGER.fine("setting oauth_callback to " + config.getCallback()); request.addOAuthParameter(AgoravaConstants.CALLBACK, config.getCallback()); addOAuthParams(request, AgoravaConstants.EMPTY_TOKEN); appendSignature(request); LOGGER.fine("sending request..."); Response response = request.send(tuner); //todo:should check return code and launch ResponseException if it's not 200 String body = response.getBody(); LOGGER.fine("response status code: " + response.getCode()); LOGGER.fine("response body: " + body); return api.getRequestTokenExtractor().extract(body); }
private String getSignature(OAuthRequest request, Token token) { LOGGER.fine("generating signature..."); String baseString = api.getBaseStringExtractor().extract(request); String signature = api.getSignatureService().getSignature(baseString, config.getApiSecret(), token.getSecret()); LOGGER.fine("base string is: " + baseString); LOGGER.fine("signature is: " + signature); return signature; }
/** * {@inheritDoc} */ public Token getAccessToken(Token requestToken, Verifier verifier) { OAuthAppSettings config = getTunedOAuthAppSettings(); OAuthRequest request = new OAuthRequestImpl(api.getAccessTokenVerb(), api.getAccessTokenEndpoint()); request.addQuerystringParameter(AgoravaConstants.CLIENT_ID, config.getApiKey()); request.addQuerystringParameter(AgoravaConstants.CLIENT_SECRET, config.getApiSecret()); request.addQuerystringParameter(AgoravaConstants.CODE, verifier.getValue()); request.addQuerystringParameter(AgoravaConstants.REDIRECT_URI, config.getCallback()); if (config.hasScope()) request.addQuerystringParameter(AgoravaConstants.SCOPE, config.getScope()); Response response = request.send(); //todo:should check return code and launch ResponseException if it's not 200 return api.getAccessTokenExtractor().extract(response.getBody()); }
@Override public void authenticate() { if (session.isConnected()) { UserProfile userProfile = session.getUserProfile(); credentials.setCredential(session.getAccessToken()); setStatus(AuthenticationStatus.SUCCESS); setAccount(new AgoravaUser(userProfile)); } else { String authorizationUrl = lifeCycleService.startDanceFor(settings.getQualifier()); try { response.get().sendRedirect(authorizationUrl); } catch (IOException e) { throw new AgoravaException("Unable to redirect user to: " + authorizationUrl); } credentials.setStatus(Status.IN_PROGRESS); setStatus(AuthenticationStatus.DEFERRED); } } }