diff --git a/README.md b/README.md index ef4083367..3308a6633 100644 --- a/README.md +++ b/README.md @@ -96,6 +96,7 @@ ScribeJava support out-of-box several HTTP clients: * 500px (https://500px.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Px500Example.java) * Renren (http://renren.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/RenrenExample.java) * Salesforce (https://www.salesforce.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SalesforceExample.java), [example with Async Ning HTTP Client](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SalesforceNingAsyncExample.java) +* Seznam (https://www.seznam.cz/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Seznam20Example.java) * Sina (http://www.sina.com.cn/ http://weibo.com/login.php) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeibo2Example.java), [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SinaWeiboExample.java) * Skyrock (http://skyrock.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SkyrockExample.java) * Slack (https://slack.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/SlackExample.java) diff --git a/scribejava-apis/src/main/java/com/github/scribejava/apis/SeznamApi20.java b/scribejava-apis/src/main/java/com/github/scribejava/apis/SeznamApi20.java new file mode 100644 index 000000000..c1e4a9ee8 --- /dev/null +++ b/scribejava-apis/src/main/java/com/github/scribejava/apis/SeznamApi20.java @@ -0,0 +1,41 @@ +package com.github.scribejava.apis; + +import com.github.scribejava.core.builder.api.DefaultApi20; +import com.github.scribejava.core.oauth2.clientauthentication.ClientAuthentication; +import com.github.scribejava.core.oauth2.clientauthentication.RequestBodyAuthenticationScheme; + +public class SeznamApi20 extends DefaultApi20 { + + protected SeznamApi20() { + } + + public static SeznamApi20 instance() { + return SeznamApi20.InstanceHolder.INSTANCE; + } + + @Override + public String getAccessTokenEndpoint() { + return "https://login.szn.cz/api/v1/oauth/token"; + } + + @Override + protected String getAuthorizationBaseUrl() { + return "https://login.szn.cz/api/v1/oauth/auth"; + } + + @Override + public String getRevokeTokenEndpoint() { + return "https://login.szn.cz/api/v1/oauth/revoke"; + } + + @Override + public ClientAuthentication getClientAuthentication() { + return RequestBodyAuthenticationScheme.instance(); + } + + private static class InstanceHolder { + + private static final SeznamApi20 INSTANCE = new SeznamApi20(); + } + +} \ No newline at end of file diff --git a/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Seznam20Example.java b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Seznam20Example.java new file mode 100644 index 000000000..36801c0fe --- /dev/null +++ b/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Seznam20Example.java @@ -0,0 +1,68 @@ +package com.github.scribejava.apis.examples; + +import com.github.scribejava.apis.SeznamApi20; +import com.github.scribejava.core.builder.ServiceBuilder; +import com.github.scribejava.core.model.OAuth2AccessToken; +import com.github.scribejava.core.model.OAuthRequest; +import com.github.scribejava.core.model.Response; +import com.github.scribejava.core.model.Verb; +import com.github.scribejava.core.oauth.OAuth20Service; + +import java.io.IOException; +import java.util.Scanner; +import java.util.concurrent.ExecutionException; + +public class Seznam20Example { + private static final String PROTECTED_RESOURCE_URL + = "https://login.szn.cz/api/v1/user"; + + private Seznam20Example() { + } + + @SuppressWarnings("PMD.SystemPrintln") + public static void main(String... args) throws IOException, InterruptedException, ExecutionException { + // Replace these with your own api key and secret + final String apiKey = System.getenv("API_KEY") != null ? System.getenv("API_KEY") : "your client id"; + final String apiSecret = System.getenv("API_SECRET") != null ? System.getenv("API_SECRET") : "your client secret"; + final OAuth20Service service = new ServiceBuilder(apiKey) + .apiSecret(apiSecret) + .defaultScope("identity") + .callback("http://localhost:9000/") + .build(SeznamApi20.instance()); + final Scanner in = new Scanner(System.in); + + System.out.println("=== Seznam20's OAuth Workflow ==="); + System.out.println(); + + // Obtain the Authorization URL + System.out.println("Fetching the Authorization URL..."); + final String authorizationUrl = service.getAuthorizationUrl(); + System.out.println("Got the Authorization URL!"); + System.out.println("Now go and authorize ScribeJava here:"); + System.out.println(authorizationUrl); + System.out.println("And paste the authorization code here"); + System.out.print(">>"); + final String code = in.nextLine(); + System.out.println(); + + System.out.println("Trading the Authorization Code for an Access Token..."); + final OAuth2AccessToken accessToken = service.getAccessToken(code); + System.out.println("Got the Access Token!"); + System.out.println("(The raw response looks like this: " + accessToken.getRawResponse() + "')"); + 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..."); + final OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); + service.signRequest(accessToken, request); + try (Response response = service.execute(request)) { + System.out.println("Got it! Lets see what we found..."); + System.out.println(); + System.out.println(response.getCode()); + System.out.println(response.getBody()); + } + System.out.println(); + System.out.println("Thats it man! Go and build something awesome with ScribeJava! :)"); + + } +}