package org.vaadin.oauth; import org.scribe.builder.api.Api; import org.scribe.builder.api.LinkedInApi; public class LinkedinButton extends OAuthButton { /** * Creates a "Log in with LinkedIn" button that will use the given API * key/secret to authenticate the user with LinkedIn, and then call the * given callback with {@link User} details. * * @param apiKey * API key from the service providing OAuth * @param apiSecret * API secret from the service providing OAuth * @param authListener * called once the user has been authenticated */ public LinkedinButton(String apiKey, String apiSecret, OAuthListener authListener) { super("Log in with LinkedIn", apiKey, apiSecret, authListener); } /** * Creates a button with the given caption that will use the given API * key/secret to authenticate the user with LinkedIn, and then call the * given callback with {@link User} details. * * @param caption * button caption * @param apiKey * API key from the service providing OAuth * @param apiSecret * API secret from the service providing OAuth * @param authListener * called once the user has been authenticated */ public LinkedinButton(String caption, String apiKey, String apiSecret, OAuthListener authListener) { super(caption, apiKey, apiSecret, authListener); } @Override protected String getAuthUrl() { requestToken = getService().getRequestToken(); return getService().getAuthorizationUrl(requestToken); } @Override protected Class<? extends Api> getApi() { return LinkedInApi.class; } @Override protected String getVerifierName() { return "oauth_verifier"; } @Override protected String getJsonDataUrl() { return "http://api.linkedin.com/v1/people/~:(id,first-name,last-name,picture-url,public-profile-url)?format=json"; } @Override protected Class<? extends User> getUserClass() { return LinkedinUser.class; } public static class LinkedinUser implements User { private String firstName; private String lastName; private String pictureUrl; private String id; private String publicProfileUrl; private String token; private String tokenSecret; public String getToken() { return token; } public String getTokenSecret() { return tokenSecret; } public String getName() { return firstName + " " + lastName; } public String getScreenName() { return publicProfileUrl .substring(publicProfileUrl.lastIndexOf("/") + 1); } public String getPictureUrl() { return pictureUrl; } public String getId() { return id; } public String getPublicProfileUrl() { return publicProfileUrl; } public String getService() { return "linkedin"; } public String getEmail() { return null; } } }