Я пытаюсь аутентифицировать связанных пользователей для моего сайта. Я использую Scribe для обработки аутентификации.Как проверить подлинность связанных пользователей с помощью java с помощью писец в xPages
Я пытаюсь сделать это в двухэтапном процессе.
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();
}
}
Вы взглянули на плагин социального enabler? – jjtbsomhorst
Да, я сделал, социальный фактор тесно связан с хранилищем ключей. поэтому вы не можете использовать его, если хотите другое решение. –
Если вам нужно передать requestToken на шаг 2, вы можете создать userBean (session scoped) и сохранить его там. –