This is an example of how to use ScribeJava to access the Khan Academy API using OAuth v1a.
Note, because Khan's default redirect will not display the verifier token directly, after logging in you have to find it in the redirect's URL parameters.
This is an example of how to use ScribeJava to access the Khan Academy API using OAuth v1a.
Note, because Khan's default redirect will not display the verifier token directly, after logging in you have to find it in the redirect's URL parameters.
import java.util.Scanner; | |
import com.github.scribejava.core.builder.ServiceBuilder; | |
import com.github.scribejava.core.builder.api.DefaultApi10a; | |
import com.github.scribejava.core.model.OAuth1AccessToken; | |
import com.github.scribejava.core.model.OAuth1RequestToken; | |
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.OAuth10aService; | |
public class KhanAcademyAccess { | |
private static final String PROTECTED_RESOURCE_URL = "https://www.khanacademy.org/api/v1/user"; | |
public static void main(String... args) { | |
final OAuth10aService service = new ServiceBuilder() | |
.apiKey("######") | |
.apiSecret("######") | |
.callback("http://example.com/") | |
.build(KAApi.instance()); | |
final Scanner in = new Scanner(System.in, "UTF-8"); | |
System.out.println("=== Foursquare's OAuth Workflow ==="); | |
System.out.println(); | |
// Obtain the Request Token | |
System.out.println("Fetching the Request Token..."); | |
final OAuth1RequestToken requestToken = service.getRequestToken(); | |
System.out.println("Got the Request Token!"); | |
System.out.println(); | |
System.out.println("Now go and authorize ScribeJava here:"); | |
System.out.println(service.getAuthorizationUrl(requestToken)); | |
System.out.println("And paste the URL parameter 'oauth_verifier=' here"); | |
System.out.print(">>"); | |
final String oauthVerifier = 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..."); | |
final OAuth1AccessToken accessToken = service.getAccessToken(requestToken, oauthVerifier); | |
System.out.println("Got the Access Token!"); | |
System.out.println("(if your curious it looks like this: " + accessToken | |
+ ", 'rawResponse'='" + 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); | |
service.signRequest(accessToken, request); | |
final 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 ScribeJava! :)"); | |
in.close(); | |
} | |
static class KAApi extends DefaultApi10a { | |
public static KAApi instance() { | |
return new KAApi(); | |
} | |
@Override | |
public String getAccessTokenEndpoint() { | |
return "https://www.khanacademy.org/api/auth2/access_token"; | |
} | |
@Override | |
public String getAuthorizationUrl(OAuth1RequestToken token) { | |
return " https://www.khanacademy.org/api/auth2/authorize?oauth_token=" + token.getToken(); | |
} | |
@Override | |
public String getRequestTokenEndpoint() { | |
return "https://www.khanacademy.org/api/auth2/request_token"; | |
} | |
} | |
} |