From c80a7d6b98f95ac53829ea34a95394afb934cc1f Mon Sep 17 00:00:00 2001 From: Johannes Buehler Date: Thu, 8 Mar 2012 20:46:50 +0100 Subject: [PATCH] added Xing oauth authentication --- .../java/org/scribe/builder/api/XingApi.java | 27 ++++++++ .../java/org/scribe/examples/XingExample.java | 65 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 src/main/java/org/scribe/builder/api/XingApi.java create mode 100644 src/test/java/org/scribe/examples/XingExample.java diff --git a/src/main/java/org/scribe/builder/api/XingApi.java b/src/main/java/org/scribe/builder/api/XingApi.java new file mode 100644 index 000000000..0db4d3ad8 --- /dev/null +++ b/src/main/java/org/scribe/builder/api/XingApi.java @@ -0,0 +1,27 @@ +package org.scribe.builder.api; + +import org.scribe.model.Token; + +public class XingApi extends DefaultApi10a +{ + private static final String AUTHORIZE_URL = "https://api.xing.com/v1/authorize?oauth_token=%s"; + + @Override + public String getAccessTokenEndpoint() + { + return "https://api.xing.com/v1/access_token"; + } + + @Override + public String getRequestTokenEndpoint() + { + return "https://api.xing.com/v1/request_token"; + } + + @Override + public String getAuthorizationUrl(Token requestToken) + { + return String.format(AUTHORIZE_URL, requestToken.getToken()); + } + +} diff --git a/src/test/java/org/scribe/examples/XingExample.java b/src/test/java/org/scribe/examples/XingExample.java new file mode 100644 index 000000000..b50b75ab9 --- /dev/null +++ b/src/test/java/org/scribe/examples/XingExample.java @@ -0,0 +1,65 @@ +package org.scribe.examples; + +import org.scribe.builder.ServiceBuilder; +import org.scribe.builder.api.XingApi; +import org.scribe.model.*; +import org.scribe.oauth.OAuthService; + +import java.io.BufferedOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Scanner; + +public class XingExample +{ + private static final String PROTECTED_RESOURCE_URL = "https://api.xing.com/v1/users/me.json"; + + public static void main(String[] args) throws IOException { + BufferedOutputStream bos = new BufferedOutputStream(new ByteArrayOutputStream()); + OAuthService service = new ServiceBuilder() + .provider(XingApi.class) + .apiKey("f2e9a0bb85851c110906") + .apiSecret("a6aaad5ca324328191d14c6c6b5b591338542de3") + .callback("oob").debugStream(bos) + .build(); + Scanner in = new Scanner(System.in); + + System.out.println("=== Xing'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(); + bos.flush(); + //0352 + // 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.POST, PROTECTED_RESOURCE_URL); + request.addBodyParameter("status", "this is sparta! *"); + 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! :)"); + } + +} \ No newline at end of file