public void example1(Vertx vertx) {

    OAuth2Auth oauth2 =
        OAuth2Auth.create(
            vertx,
            OAuth2FlowType.AUTH_CODE,
            new JsonObject()
                .put("clientID", "YOUR_CLIENT_ID")
                .put("clientSecret", "YOUR_CLIENT_SECRET")
                .put("site", "https://github.com/login")
                .put("tokenPath", "/oauth/access_token")
                .put("authorizationPath", "/oauth/authorize"));

    // when there is a need to access a protected resource or call a protected method,
    // call the authZ url for a challenge

    String authorization_uri =
        oauth2.authorizeURL(
            new JsonObject()
                .put("redirect_uri", "http://localhost:8080/callback")
                .put("scope", "notifications")
                .put("state", "3(#0/!~"));

    // when working with web application use the above string as a redirect url

    // in this case GitHub will call you back in the callback uri one should now complete the
    // handshake as:

    String code =
        "xxxxxxxxxxxxxxxxxxxxxxxx"; // the code is provided as a url parameter by github callback
                                    // call

    oauth2.getToken(
        new JsonObject().put("code", code).put("redirect_uri", "http://localhost:8080/callback"),
        res -> {
          if (res.failed()) {
            // error, the code provided is not valid
          } else {
            // save the token and continue...
          }
        });
  }
  public void example2(Vertx vertx, HttpServerResponse response) {

    // Set the client credentials and the OAuth2 server
    JsonObject credentials =
        new JsonObject()
            .put("clientID", "<client-id>")
            .put("clientSecret", "<client-secret>")
            .put("site", "https://api.oauth.com");

    // Initialize the OAuth2 Library
    OAuth2Auth oauth2 = OAuth2Auth.create(vertx, OAuth2FlowType.AUTH_CODE, credentials);

    // Authorization oauth2 URI
    String authorization_uri =
        oauth2.authorizeURL(
            new JsonObject()
                .put("redirect_uri", "http://localhost:8080/callback")
                .put("scope", "<scope>")
                .put("state", "<state>"));

    // Redirect example using Vert.x
    response.putHeader("Location", authorization_uri).setStatusCode(302).end();

    JsonObject tokenConfig =
        new JsonObject()
            .put("code", "<code>")
            .put("redirect_uri", "http://localhost:3000/callback");

    // Callbacks
    // Save the access token
    oauth2.getToken(
        tokenConfig,
        res -> {
          if (res.failed()) {
            System.err.println("Access Token Error: " + res.cause().getMessage());
          } else {
            // Get the access token object (the authorization code is given from the previous step).
            AccessToken token = res.result();
          }
        });
  }