Я пытаюсь аутентифицировать пользователей linkedin для моего сайта.Я использую Scribe для обработки аутентификации.
Я пытаюсь сделать это в два этапа.
step1 просто получает правильный URL и перенаправляет пользователя на страницу подтверждения.это работает нормально.и после того, как я подтвердил, что я перенаправлен обратно на страницу на моем сайте.
Шаг 2 - это та, с которой у меня проблема.когда открывается перенаправленная страница x, я вызываю метод step2 с помощью ключа токена и верификатора из URL.
Одна вещь, которую я не получаю, это то, действительно ли мне нужно создать службу на обоих этапах иэто то, что вызывает мои проблемы.как мне отправить запрос между двумя шагами.пожалуйста, совет, как заставить этот сценарий работать
Спасибо - Томас
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();
}
}