Visitar URL original
add support for zendesk oauth 2.0 · nishit130/scribejava@09d725f · GitHub
Skip to content

Commit 09d725f

Browse files
committed
1 parent b62f73a commit 09d725f

3 files changed

Lines changed: 119 additions & 0 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ ScribeJava support out-of-box several HTTP clients:
112112
* Xero (https://www.xero.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XeroExample.java)
113113
* XING (https://www.xing.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/XingExample.java)
114114
* Yahoo (https://www.yahoo.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/Yahoo20Example.java), [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/YahooExample.java)
115+
* Zendesk (https://www.zendesk.com/) [example](https://github.com/scribejava/scribejava/blob/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples/ZendeskExample.java)
115116
* check the [examples folder](https://github.com/scribejava/scribejava/tree/master/scribejava-apis/src/test/java/com/github/scribejava/apis/examples)
116117

117118
### Small and modular
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.github.scribejava.apis;
2+
3+
import com.github.scribejava.apis.openid.OpenIdJsonTokenExtractor;
4+
import com.github.scribejava.core.builder.api.DefaultApi20;
5+
import com.github.scribejava.core.extractors.TokenExtractor;
6+
import com.github.scribejava.core.model.OAuth2AccessToken;
7+
8+
public class ZendeskApi extends DefaultApi20 {
9+
10+
private final String serverURL;
11+
private final String accessTokenEndpoint;
12+
private final String authorizationBaseUrl;
13+
14+
protected ZendeskApi(String serverURL) {
15+
this.serverURL = serverURL;
16+
this.accessTokenEndpoint = serverURL + "/oauth/tokens";
17+
this.authorizationBaseUrl = serverURL + "/oauth/authorizations/new";
18+
}
19+
20+
public static ZendeskApi instance(String serverUrl) {
21+
return new ZendeskApi(serverUrl);
22+
}
23+
24+
public String getServerURL() {
25+
return serverURL;
26+
}
27+
28+
@Override
29+
public String getAccessTokenEndpoint() {
30+
return accessTokenEndpoint;
31+
}
32+
33+
@Override
34+
protected String getAuthorizationBaseUrl() {
35+
return authorizationBaseUrl;
36+
}
37+
38+
@Override
39+
public TokenExtractor<OAuth2AccessToken> getAccessTokenExtractor() {
40+
return OpenIdJsonTokenExtractor.instance();
41+
}
42+
43+
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.github.scribejava.apis.examples;
2+
3+
import java.io.IOException;
4+
import java.security.KeyManagementException;
5+
import java.security.NoSuchAlgorithmException;
6+
import java.util.Scanner;
7+
import java.util.concurrent.ExecutionException;
8+
9+
import com.github.scribejava.apis.ZendeskApi;
10+
import com.github.scribejava.core.builder.ServiceBuilder;
11+
import com.github.scribejava.core.model.OAuth2AccessToken;
12+
import com.github.scribejava.core.model.OAuthRequest;
13+
import com.github.scribejava.core.model.Response;
14+
import com.github.scribejava.core.model.Verb;
15+
import com.github.scribejava.core.oauth.OAuth20Service;
16+
17+
@SuppressWarnings("PMD.SystemPrintln")
18+
public class ZendeskExample {
19+
20+
private static final String NETWORK_NAME = "Zendesk";
21+
22+
public static void main(String... args) throws IOException, NoSuchAlgorithmException, KeyManagementException,
23+
InterruptedException, ExecutionException {
24+
25+
// Replace these with your client id and secret
26+
final String clientId = "Your client ID";
27+
final String clientSecret = "Your client secret";
28+
final String clientUrl = "Your zendesk URL";
29+
final String callbackUrl = "Your callback URL";
30+
31+
32+
final OAuth20Service service = new ServiceBuilder(clientId)
33+
.apiSecret(clientSecret)
34+
.callback(callbackUrl)
35+
.defaultScope("read")
36+
.build(ZendeskApi.instance(clientUrl));
37+
38+
final Scanner in = new Scanner(System.in, "UTF-8");
39+
40+
System.out.println("=== " + NETWORK_NAME + "'s OAuth 2.0 Workflow ===");
41+
System.out.println();
42+
43+
// Obtain the Authorization URL
44+
System.out.println("Fetching the Authorization URL...");
45+
final String authorizationUrl = service.getAuthorizationUrl();
46+
System.out.println("Got the Authorization URL!");
47+
System.out.println("Now go and authorize ScribeJava here:");
48+
System.out.println(authorizationUrl);
49+
System.out.println("And paste the authorization code here");
50+
System.out.print(">> ");
51+
final String code = in.nextLine();
52+
System.out.println();
53+
54+
// Trade the Authorization Code for the Access Token
55+
System.out.println("Trading the Request Token for an Access Token...");
56+
final OAuth2AccessToken accessToken = service.getAccessToken(code);
57+
System.out.println("Got the Access Token!");
58+
System.out.println("(The raw response looks like this: " + accessToken.getRawResponse() + "')");
59+
System.out.println();
60+
61+
// Now let's go and ask for a protected resource!
62+
System.out.println("Now we're going to access a protected resource...");
63+
final OAuthRequest request = new OAuthRequest(Verb.GET, clientUrl + "/api/v2/users/me.json");
64+
service.signRequest(accessToken, request);
65+
try (Response response = service.execute(request)) {
66+
System.out.println("Got it! Lets see what we found...");
67+
System.out.println();
68+
System.out.println(response.getCode());
69+
System.out.println(response.getBody());
70+
}
71+
System.out.println("Thats it man! Go and build something awesome with ScribeJava! :)");
72+
73+
}
74+
75+
}

0 commit comments

Comments
 (0)