Я пытаюсь аутентифицировать пользователей LinkedIn для моего сайта. Я использую Scribe для проверки подлинности.
Я пытаюсь сделать это в двухэтапном процессе.
step1 просто получает правильный URL-адрес и перенаправляет пользователя на страницу подтверждения. это работает нормально. и после того, как я подтвердил, меня перенаправляют обратно на страницу моего сайта.
Шаг 2 - это тот, с которым у меня проблемы. когда открывается перенаправленная xpage, я вызываю метод step2, используя токен и ключ проверки из URL-адреса.
Одна вещь, которую я не понимаю, заключается в том, действительно ли мне нужно создавать службу на обоих этапах и является ли это причиной моих проблем. как мне отправить requestToken между двумя моими шагами. пожалуйста, посоветуйте, как заставить этот сценарий работать
Спасибо - Томас
import org.scribe.builder.ServiceBuilder;
import org.scribe.oauth.OAuthService;
import java.util.Scanner;
import org.scribe.builder.*;
import org.scribe.model.*;
import org.scribe.oauth.*;
import org.scribe.builder.api.*;
import javax.faces.context.*;
public class DoDance
{
private static final String PROTECTED_RESOURCE_URL = "http://api.linkedin.com/v1/people/~/connections:(id,last-name)";
public void step1()
{
try {
OAuthService service = new ServiceBuilder()
.provider(LinkedInApi.class)
.apiKey("key")
.apiSecret("secret")
.callback("http://www.acme.com/linkedin.xsp")
.build();
Token requestToken = service.getRequestToken();
String authUrl = service.getAuthorizationUrl(requestToken);
// Redirects the user to linkedin confirmation page
// This is working fine
FacesContext.getCurrentInstance().getExternalContext().redirect(authUrl);
} catch (Exception e) {
e.printStackTrace();
}
}
public String step2(String tok,String ver){
// this method is called in the beforeRenderResponse in the redirected xpage
// I get the token and verifyer in from the url parameters
Response response = null;
try {
OAuthService service = new ServiceBuilder()
.provider(LinkedInApi.class)
.apiKey("key")
.apiSecret("secret")
.build();
Token accessToken = service.getAccessToken(???,new Verifier(ver));
OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
service.signRequest(accessToken, request);
response = request.send();
} catch (Exception e) {
e.printStackTrace();
}
return "Body = " + response.getBody();
}
}