Основываясь на Scribe example on github, я пытаюсь разрешить свое приложение использовать api LinkedIn.Как я могу использовать Scribe с JSF для подключения к 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?
Спасибо BalusC, перемещая остаток кода в @PostConstruct бэк-компонента. Я ценю вашу помощь! – greenJavaDev
Добро пожаловать. – BalusC