Основываясь на примере Scribe на github, я пытаюсь авторизовать свой приложение для использования API LinkedIn.
Вот мой текущий код, привязанный к нажатию кнопки:
public String generateFromLinkedIn() {
OAuthService service = new ServiceBuilder()
.provider(LinkedInApi.class)
.apiKey(apiKey)
.apiSecret(apiSecret)
.callback("http://localhost:8080/Project/faces/linkedIn.xhtml").build();
ExternalContext externalContext = FacesContext.getCurrentInstance()
.getExternalContext();
Token requestToken = service.getRequestToken();
String authUrl = service.getAuthorizationUrl(requestToken);
try {
externalContext.redirect(authUrl);
} catch (IOException ex) {
Logger.getLogger(LinkedInController.class.getName()).log(Level.SEVERE, null, ex);
}
Map<String, String> parameterMap = (Map<String, String>) externalContext.getRequestParameterMap();
Verifier v = new Verifier(parameterMap.get("oauth_verifier"));
Token accessToken = service.getAccessToken(requestToken, v);
OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.linkedin.com/v1/people/~");
service.signRequest(accessToken, request);
Response response = request.send();
System.err.println(response.getBody());
return "";
}
И на моей странице .xhtml у меня есть:
<h:commandButton value="Generate" action="#{linkedInController.generateFromLinkedIn()}"></h:commandButton>
Все работает нормально, пока я не пытаюсь получить Verifier из карты параметров, в которой нет никакого oauth_verifier. Я попытался разделить его на несколько методов, но пока не могу получить oauth_verifier из параметров URL-адреса, хотя он явно присутствует после возврата из диалогового окна авторизации LinkedIn.
Любые предложения о том, как правильно получить этот верификатор или как заставить Scribe работать с JSF?