/** * Call api endpoint * * @param verb http-method to use, like: GET, POST, PUT, DELETE, PATCH * @param url the api-url to call * @return the output of the api-call, can be a JSON-string */ private String call(Verb verb, String url) { String urlEnd = url; if (!url.startsWith("/")) { urlEnd = "/" + url; } OAuthRequest request = new OAuthRequest(verb, "https://graph.facebook.com/v2.2" + urlEnd); request.addHeader("Authorization", "Bearer " + accessTokenString); Response response = request.send(); return response.getBody(); }
private void appendSignature(OAuthRequest request) { switch (config.getSignatureType()) { case Header: config.log("using Http Header signature"); String oauthHeader = api.getHeaderExtractor().extract(request); request.addHeader(OAuthConstants.HEADER, oauthHeader); break; case QueryString: config.log("using Querystring signature"); for (Map.Entry<String, String> entry : request.getOauthParameters().entrySet()) { request.addQuerystringParameter(entry.getKey(), entry.getValue()); } break; } }
@HandlesEvent("loginGoogle") public Resolution loginGoogle() { logger.info("Entrando en LoginGoogle...."); OAuthService service = googleServiceProvider.getService(); logger.debug("OAuth service----->{}", service.getVersion()); Token accessToken = (Token) getContext().getRequest().getSession().getAttribute(ATTR_OAUTH_ACCESS_TOKEN + "Google"); if (accessToken == null) { logger.debug("El access Token es nulo, se crea uno nuevo."); Token requestToken = service.getRequestToken(); getContext() .getRequest() .getSession() .setAttribute(ATTR_OAUTH_REQUEST_TOKEN + "Google", requestToken); String url = AUTHORIZE_URL.concat(requestToken.getToken()); logger.debug("Se redirecciona a la pagina de google: {}", url); return new RedirectResolution(url); } logger.debug("Forward a pagina inicial, el access token esta en sesion: {}", accessToken); // coge perfil usuario OAuthRequest oauthRequest = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); logger.debug("Se va a conectar al servicio de google: "); service.signRequest(accessToken, oauthRequest); Response oauthResponse = oauthRequest.send(); String body = oauthResponse.getBody(); ObjectMapper mapper = new ObjectMapper(); try { respuestaJson = mapper.readValue(body, new TypeReference<Map<String, Object>>() {}); } catch (IOException e) { logger.error("El mapeado de Json fallo : {}", e.getMessage()); getContext() .getValidationErrors() .addGlobalError(new SimpleError("error.excepcion.jackson", e.getMessage())); } logger.debug("La respuesta body: {}", body); return new ForwardResolution("/WEB-INF/jsp/google.jsp"); }
public static void main(String[] args) { OAuthService service = new ServiceBuilder() .provider(Layer7Api.class) .apiKey("Consumer") .apiSecret("Secret") .build(); Scanner in = new Scanner(System.in); System.out.println("=== Layer7's OAuth Toolkit 1.0 Workflow ==="); System.out.println(); // Obtain the Request Token System.out.println("Fetching the Request Token..."); Token requestToken = service.getRequestToken(); System.out.println("Got the Request Token!"); System.out.println(); System.out.println("Now go and authorize Scribe here:"); System.out.println(service.getAuthorizationUrl(requestToken)); System.out.println("And paste the verifier here"); System.out.print(">>"); Verifier verifier = new Verifier(in.nextLine()); System.out.println(); // Trade the Request Token and Verifier for the Access Token System.out.println("Trading the Request Token for an Access Token..."); Token accessToken = service.getAccessToken(requestToken, verifier); System.out.println("Got the Access Token!"); System.out.println("(if your curious it looks like this: " + accessToken + " )"); System.out.println(); // Now let's go and ask for a protected resource! System.out.println("Now we're going to access a protected resource..."); OAuthRequest request = new OAuthRequest(Verb.POST, PROTECTED_RESOURCE_URI); service.signRequest(accessToken, request); Response response = request.send(); System.out.println("Got it! Lets see what we found..."); System.out.println(); System.out.println(response.getBody()); System.out.println(); System.out.println( "Thats it man! Go and build something awesome with Scribe and Layer 7's OAuth Toolkit! :)"); }
/* * posts an image to the users news feed * @param message to show * @param image as form data * @return the new image id if successful */ public String publishPicture(String msg, Image image, String placeId) throws IOException { OAuthRequest request = new OAuthRequest(Verb.POST, "https://graph.facebook.com/v2.2/me/photos"); // request node request.addHeader("Authorization", "Bearer " + accessTokenString); // authentificate // check input to avoid error responses if (msg != null && image != null) { // facebook requires multipart post structure MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("message", msg); // description if (placeId != null && !"".equals(placeId)) { builder.addTextBody( "place", placeId); // add link to FabLab site if property is set in preferences } // convert image to bytearray and append to multipart BufferedImage bimage = new BufferedImage( image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB); Graphics2D bGr = bimage.createGraphics(); bGr.drawImage(image, 0, 0, null); bGr.dispose(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(bimage, "png", baos); builder.addBinaryBody(msg, baos.toByteArray(), ContentType.MULTIPART_FORM_DATA, "test.png"); // generate multipart byte stream and add to payload of post package HttpEntity multipart = builder.build(); ByteArrayOutputStream multipartOutStream = new ByteArrayOutputStream((int) multipart.getContentLength()); multipart.writeTo(multipartOutStream); request.addPayload(multipartOutStream.toByteArray()); // set header of post package Header contentType = multipart.getContentType(); request.addHeader(contentType.getName(), contentType.getValue()); // send and response answer Response response = request.send(); return response.getBody(); } else { throw new RuntimeException(CONSTANTS.get(FACEBOOK_MESSAGE_IMG_NEEDED)); } }
@Override public Token getAccessToken(Token requestToken, Verifier verifier, RequestTuner tuner) { config.log("obtaining access token from " + api.getAccessTokenEndpoint()); OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint()); request.addBodyParameter("x_auth_username", config.getXAuthParams().getUsername()); request.addBodyParameter("x_auth_password", config.getXAuthParams().getPassword()); request.addBodyParameter("x_auth_mode", "client_auth"); config.log("setting token to: " + requestToken + " and verifier to: " + verifier); // request.addOAuthParameter(OAuthConstants.TOKEN, requestToken.getToken()); request.addOAuthParameter(OAuthConstants.VERIFIER, verifier.getValue()); addOAuthParams(request, requestToken); appendSignature(request); Response response = request.send(tuner); return api.getAccessTokenExtractor().extract(response.getBody()); }
public static void main(String[] args) throws MalformedURLException { OAuthService service = new ServiceBuilder() .provider(FoursquareApi.class) .apiKey("FEGFXJUFANVVDHVSNUAMUKTTXCP1AJQD53E33XKJ44YP1S4I") .apiSecret("AYWKUL5SWPNC0CTQ202QXRUG2NLZYXMRA34ZSDW4AUYBG2RC") .build(); Scanner in = new Scanner(System.in); System.out.println("=== Foursquare's OAuth Workflow ==="); System.out.println(); // Obtain the Request Token System.out.println("Fetching the Request Token..."); Token requestToken = service.getRequestToken(); System.out.println("Got the Request Token!"); System.out.println(); System.out.println("Now go and authorize Scribe here:"); System.out.println(service.getAuthorizationUrl(requestToken)); System.out.println("And paste the verifier here"); System.out.print(">>"); Verifier verifier = new Verifier(in.nextLine()); System.out.println(); // Trade the Request Token and Verfier for the Access Token System.out.println("Trading the Request Token for an Access Token..."); Token accessToken = service.getAccessToken(requestToken, verifier); System.out.println("Got the Access Token!"); System.out.println("(if your curious it looks like this: " + accessToken + " )"); System.out.println(); // Now let's go and ask for a protected resource! System.out.println("Now we're going to access a protected resource..."); OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); service.signRequest(accessToken, request); Response response = request.send(); System.out.println("Got it! Lets see what we found..."); System.out.println(); System.out.println(response.getBody()); System.out.println(); System.out.println("Thats it man! Go and build something awesome with Scribe! :)"); }
/** {@inheritDoc} */ public Token getAccessToken(Token requestToken, Verifier verifier) { OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint()); request.addQuerystringParameter(OAuthConstants.GRANT_TYPE, OAuthConstants.AUTHORIZATION_CODE); request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey()); request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret()); request.addQuerystringParameter(OAuthConstants.CODE, verifier.getValue()); request.addQuerystringParameter(OAuthConstants.REDIRECT_URI, config.getCallback()); if (config.hasScope()) request.addQuerystringParameter(OAuthConstants.SCOPE, config.getScope()); Response response = request.send(); return api.getAccessTokenExtractor().extract(response.getBody()); }
@HandlesEvent("callback") public Resolution callback() { logger.debug("El codigo para verificar es: {}", oauth_verifier); // coge request token OAuthService service = googleServiceProvider.getService(); Token requestToken = (Token) getContext() .getRequest() .getSession() .getAttribute(ATTR_OAUTH_REQUEST_TOKEN + "Google"); // coge access token Verifier verifier = new Verifier(oauth_verifier); Token accessToken = service.getAccessToken(requestToken, verifier); logger.debug("El access token es: {}", accessToken.getRawResponse()); // guarda access token en session getContext() .getRequest() .getSession() .setAttribute(ATTR_OAUTH_ACCESS_TOKEN + "Google", accessToken); // coge perfil usuario OAuthRequest oauthRequest = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); logger.debug("Se va a conectar al servicio de google: "); service.signRequest(accessToken, oauthRequest); Response oauthResponse = oauthRequest.send(); String body = oauthResponse.getBody(); ObjectMapper mapper = new ObjectMapper(); try { respuestaJson = mapper.readValue(body, new TypeReference<Map<String, Object>>() {}); } catch (IOException e) { getContext() .getValidationErrors() .addGlobalError(new SimpleError("error.excepcion.jackson", e.getMessage())); } logger.debug("La respuesta body: {}", oauthResponse.getBody()); return new ForwardResolution("/WEB-INF/jsp/google.jsp"); }
public Token getRequestToken(RequestTuner tuner) { config.log("obtaining request token from " + api.getRequestTokenEndpoint()); OAuthRequest request = new OAuthRequest(api.getRequestTokenVerb(), api.getRequestTokenEndpoint()); config.log("setting oauth_callback to " + config.getCallback()); request.addOAuthParameter(OAuthConstants.CALLBACK, config.getCallback()); addOAuthParams(request, OAuthConstants.EMPTY_TOKEN); appendSignature(request); config.log("sending request..."); Response response = request.send(tuner); String body = response.getBody(); config.log("response status code: " + response.getCode()); config.log("response body: " + body); return api.getRequestTokenExtractor().extract(body); }
public void run() { try { System.out.println("Starting Twitter public stream consumer thread."); // Enter your consumer key and secret below OAuthService service = new ServiceBuilder() .provider(TwitterApi.class) .apiKey("qFiiPwXFjaiRsFAq5OSYHFT0f") .apiSecret("V9t7qXkbjglS76TKy6Xw9U2fukb1Nh1xmtKKR30kXR6noap9Qe") .build(); // Set your access token Token accessToken = new Token( "66266917-XNT9WqkdFO8TQz6VQeCQtYEZIBdgpp82tUxCrIcIW", "2v4EMHESOz4yeajmjj8788mkGa2UOLAeUR1nrJ27tlSek"); // Let's generate the request System.out.println("Connecting to Twitter Public Stream"); OAuthRequest request = new OAuthRequest(Verb.POST, STREAM_URI); request.addHeader("version", "HTTP/1.1"); request.addHeader("host", "stream.twitter.com"); request.setConnectionKeepAlive(true); request.addHeader("user-agent", "Twitter Stream Reader"); request.addBodyParameter( "track", "Bank of America, bofa, bofa_news, bofa_help, ROLB, BMB, Pingit, Ping-it, BarclaysMobileBanking, Barclays Live, Feature Store, Barclays, Barclaycard, BCS, BarclaysWealth, john mcfarlane, @Barclays, @Barclaysuk, hsbc, hsbc_press, citi, Citigroup Inc, RBS, Royal Bank Of Scotland, LLyods Bank, STAN, @StanChart, Santander, NatWest, Halifax, Tesco Bank"); // Set keywords you'd like to track here service.signRequest(accessToken, request); Response response = request.send(); // Create a reader to read Twitter's stream BufferedReader reader = new BufferedReader(new InputStreamReader(response.getStream())); // Create a new file for raw tweets File file = new File("C:\\Users\\Striker\\Desktop\\Tweet Data\\raw_tweet.txt"); FileWriter fw = new FileWriter(file.getAbsoluteFile()); BufferedWriter bw = new BufferedWriter(fw); String line; while ((line = reader.readLine()) != null) { latestTweet = line; bw.write(line); bw.newLine(); tweetCount++; System.out.println(line); } bw.close(); } catch (IOException ioe) { ioe.printStackTrace(); } }
private void addOAuthParams(OAuthRequest request, Token token) { request.addOAuthParameter( OAuthConstants.TIMESTAMP, api.getTimestampService().getTimestampInSeconds()); request.addOAuthParameter(OAuthConstants.NONCE, api.getTimestampService().getNonce()); request.addOAuthParameter(OAuthConstants.CONSUMER_KEY, config.getApiKey()); request.addOAuthParameter( OAuthConstants.SIGN_METHOD, api.getSignatureService().getSignatureMethod()); request.addOAuthParameter(OAuthConstants.VERSION, getVersion()); if (config.hasScope()) { request.addOAuthParameter(OAuthConstants.SCOPE, config.getScope()); } request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, token)); config.log( "appended additional OAuth parameters: " + MapUtils.toString(request.getOauthParameters())); }
/** {@inheritDoc} */ public Token getAccessToken(Token requestToken, Verifier verifier) { OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint()); request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey()); request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret()); request.addQuerystringParameter(OAuthConstants.CODE, verifier.getValue()); request.addQuerystringParameter(OAuthConstants.REDIRECT_URI, config.getCallback()); if (config.hasScope()) request.addQuerystringParameter(OAuthConstants.SCOPE, config.getScope()); System.out.println("Access Token request is:" + request); Response response = request.send(); System.out.println("Got the Access Token!"); System.out.println("(if your curious here's the response: " + response.getBody() + " )"); return api.getAccessTokenExtractor().extract(response.getBody()); }
/** {@inheritDoc} */ public Token refreshAccessToken(Token accessToken) { String accessTokenEndpoint = api.getAccessTokenEndpoint(); if (accessTokenEndpoint.contains("?grant_type=")) { // handle the ugly case where the grant_type parameter is already hardcoded in the constant // url accessTokenEndpoint = accessTokenEndpoint.substring(0, accessTokenEndpoint.indexOf("?")); } OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), accessTokenEndpoint); request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey()); request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret()); request.addQuerystringParameter(OAuthConstants.REDIRECT_URI, config.getCallback()); request.addQuerystringParameter(OAuthConstants.GRANT_TYPE, api.getRefreshTokenParameterName()); request.addQuerystringParameter(api.getRefreshTokenParameterName(), accessToken.getToken()); Response response = request.send(); System.out.println("Got the Refresh Token!"); System.out.println("(if your curious here's the response: " + response.getBody() + " )"); return api.getAccessTokenExtractor().extract(response.getBody()); }
public void run() { try { System.out.println("Starting Twitter public stream consumer thread."); // Enter your consumer key and secret below OAuthService service = new ServiceBuilder() .provider(TwitterApi.class) .apiKey("0GglmCJSWdauygE0dPYVhRoYN") .apiSecret("aikSSCPcX1AOayVw98MKuPvalUKvPZhaESEJMawVGK9a9bfG0I") .build(); // Set your access token Token accessToken = new Token( "863517241-dba29VzM7RaYMOvwFv03KOdkki6SVluRiRLqc1Ks", "cB8WS8duMCy4I30ZawZJFuv743jLdTWKLKkniMKfZOEQi"); // Let's generate the request System.out.println("Connecting to Twitter Public Stream"); OAuthRequest request = new OAuthRequest(Verb.POST, STREAM_URI); request.addHeader("version", "HTTP/1.1"); request.addHeader("host", "stream.twitter.com"); request.setConnectionKeepAlive(true); request.addHeader("user-agent", "Twitter Stream Reader"); // request.addBodyParameter("track", "java,heroku,twitter"); // Set keywords you'd like to // track here request.addBodyParameter("follow", "4884271164"); // Set keywords you'd like to track here service.signRequest(accessToken, request); Response response = request.send(); // Create a reader to read Twitter's stream BufferedReader reader = new BufferedReader(new InputStreamReader(response.getStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException ioe) { ioe.printStackTrace(); } }
/** {@inheritDoc} */ public void signRequest(Token accessToken, OAuthRequest request) { request.addQuerystringParameter(OAuthConstants.ACCESS_TOKEN, accessToken.getToken()); }
/** {@inheritDoc} */ public Token refreshAccessToken(Token accessToken) { String accessTokenEndpoint = api.getAccessTokenEndpoint(); if (accessTokenEndpoint.contains("?grant_type=")) { // handle the ugly case where the grant_type parameter is already hardcoded in the constant // url accessTokenEndpoint = accessTokenEndpoint.substring(0, accessTokenEndpoint.indexOf("?")); } OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), accessTokenEndpoint); switch (api.getAccessTokenVerb()) { case POST: request.addBodyParameter(OAuthConstants.CLIENT_ID, config.getApiKey()); request.addBodyParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret()); // request.addBodyParameter(OAuthConstants.REDIRECT_URI, config.getCallback()); request.addBodyParameter(OAuthConstants.GRANT_TYPE, api.getRefreshTokenParameterName()); request.addBodyParameter(api.getRefreshTokenParameterName(), accessToken.getToken()); break; case GET: default: request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey()); request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret()); request.addQuerystringParameter(OAuthConstants.REDIRECT_URI, config.getCallback()); request.addQuerystringParameter( OAuthConstants.GRANT_TYPE, api.getRefreshTokenParameterName()); request.addQuerystringParameter(api.getRefreshTokenParameterName(), accessToken.getToken()); } Response response = request.send(); return api.getAccessTokenExtractor().extract(response.getBody()); }
@Override public boolean handleRequest( VaadinSession session, VaadinRequest request, VaadinResponse response) throws IOException { if (data.isCallbackForMe(request)) { String verifier = request.getParameter(data.getVerifierParameterName()); if (verifier != null) { // Got verifier! data.setVerifier(requestToken, new Verifier(verifier)); finish(session, response); Token t = data.getAccessToken(); OAuthRequest r = new OAuthRequest(Verb.GET, data.getRequestLink()); data.signRequest(t, r); Response resp = r.send(); FacebookAnswer answer = new Gson().fromJson(resp.getBody(), FacebookAnswer.class); String name = answer.name; String picUrl = answer.picture.data.url; String oauthId = "facebook" + answer.id; saveUser(oauthId, name, "", picUrl); VaadinSession.getCurrent().removeRequestHandler(this); ((VaadinServletResponse) response) .getHttpServletResponse() .sendRedirect(data.getRedirectUrl()); return true; } // No verifier in the parameters. That's most likely because the user // denied the OAuth. // TODO: current error message reporting (below) is not very useful String error = null; for (String errorName : data.getErrorParameterNames()) { error = request.getParameter(errorName); if (error != null) { break; } } String errorMessage; if (error == null) { errorMessage = "OAuth failed."; } else { errorMessage = "OAuth denied: " + error; } data.setDenied(errorMessage); finish(session, response); } else if (request.getParameter("code") != null) { String code = request.getParameter("code"); Verifier v = new Verifier(code); Token t = googleService.getAccessToken(null, v); OAuthRequest r = new OAuthRequest(Verb.GET, "https://www.googleapis.com/plus/v1/people/me"); googleService.signRequest(t, r); Response resp = r.send(); GooglePlusAnswer answer = new Gson().fromJson(resp.getBody(), GooglePlusAnswer.class); String name = (answer.displayName != null && !answer.displayName.equals("")) ? answer.displayName : answer.emails[0].value.substring(0, answer.emails[0].value.indexOf("@")); String picUrl = answer.image.url; String oauthId = "google" + answer.id; saveUser(oauthId, name, answer.emails[0].value, picUrl); VaadinSession.getCurrent().removeRequestHandler(this); ((VaadinServletResponse) response) .getHttpServletResponse() .sendRedirect(data.getRedirectUrl()); return true; } return false; }
/** {@inheritDoc} */ public Token getAccessToken(Token requestToken, Verifier verifier) { OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint()); switch (api.getAccessTokenVerb()) { case POST: request.addBodyParameter(OAuthConstants.CLIENT_ID, config.getApiKey()); request.addBodyParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret()); request.addBodyParameter(OAuthConstants.CODE, verifier.getValue()); request.addBodyParameter(OAuthConstants.REDIRECT_URI, config.getCallback()); if (config.hasScope()) { request.addBodyParameter(OAuthConstants.SCOPE, config.getScope()); } if (config.hasGrantType()) { request.addBodyParameter(OAuthConstants.GRANT_TYPE, config.getGrantType()); } break; case GET: default: request.addQuerystringParameter(OAuthConstants.CLIENT_ID, config.getApiKey()); request.addQuerystringParameter(OAuthConstants.CLIENT_SECRET, config.getApiSecret()); request.addQuerystringParameter(OAuthConstants.CODE, verifier.getValue()); request.addQuerystringParameter(OAuthConstants.REDIRECT_URI, config.getCallback()); if (config.hasScope()) { request.addQuerystringParameter(OAuthConstants.SCOPE, config.getScope()); } if (config.hasGrantType()) { request.addQuerystringParameter(OAuthConstants.GRANT_TYPE, config.getGrantType()); } } Response response = request.send(); return api.getAccessTokenExtractor().extract(response.getBody()); }