나는이 사이트에서 새로운 사람이며, 이것이 나의 첫 번째 질문이다.Struts2 - 여러 메소드로 작업 하시겠습니까?
저는 웹 사이트를해야하는데, 저는 java와 Struts2를 사용하고 있습니다. 그러나 저는 Struts2에 익숙합니다.
내 사이트에서 Facebook에 요청을하고 OAuth로 인증을 받아야합니다.
조치 페이지의 실행 메소드에서 모든 프로세스 (인증 및 보호 자원 요청)를 수행 중이며,이 프로세스는 매우 복잡하며 Facebook과 내 웹간에 많은 리디렉션이 있습니다. 나는 여러 가지 방법으로 작업을 작성하지 마십시오 : "실행"하고 실행하려는 작업 (예 : "createUser")은 충분해야합니다 "(에서 http://freeopenidea.blogspot.com.es/2010/04/struts2-best-practices.html).
대부분의 코드는 다른 순간에 내 사이트의 다른 부분에서 호출 될 수 있습니다. 처음 연결할 때이 과정을 수행하지만이 작업을 수행하여 연락처 목록을 새로 고칠 수 있습니다.
1 - 필요한 메서드에 대해 분리 된 클래스 (동작이 아님)를 만들고 "execute"메서드에서 호출해야합니까?
2 - 코드를 작업 페이지에 보관해야하지만 "실행"과 다른 방법으로 사용해야합니까? 그리고 내가 할 일이있을 때마다이 페이지를 불러라.
어디서 코드를 넣을지 모르겠다. (나는 알고있다. 나는 accessToken을 저장해야만한다. 단지 코드를 붙여 넣기 만하면되지만 복잡함을 보여주기 위해 붙여 넣기 만한다.)
public String execute() throws Exception{
if (code!=null){
Verifier verifier = new Verifier(code);
//get the accessToken to do requests
Token accessToken = service.getAccessToken(EMPTY_TOKEN, verifier);
OAuthRequest requestList = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
service.signRequest(accessToken, requestList);
Response responseList = requestList.send();
if (responseList.getCode() == 200){
//I get the Friends List
JsonParse parser = new JsonParse();
JSONObject json = (JSONObject) JSONSerializer.toJSON(responseList.getBody());
JSONArray datos = json.getJSONArray("data");
for (Object o : datos)
{//for every friend of the list I do this
JSONObject elem = (JSONObject) o;
String id = elem.getString("id");
OAuthRequest requestFriend = new OAuthRequest(Verb.GET,"https://graph.facebook.com/"+id);
service.signRequest(accessToken, requestFriend);
Response responseFriend = requestFriend.send();
if (responseFriend.getCode() == 200){
JsonParse parserAux = new JsonParse();
PerfilContacto pcBean = parserAux.parseFacebookElement(responseFriend.getBody());
pcDAO.insertarContacto(pcBean);
}
}
}
return SUCCESS;
}
else return ERROR;
}
이것은 좋은 대답입니다! 인증 정보를 넣어야하는 부분에 대한 조언이 있습니까? OAuth 인증 요청을 하나의 패키지로 그룹화하고이 패키지를위한 스택에 struts 인터셉터를 넣어서이 비트를보다 깔끔하게 처리 할 수있는 것처럼 보입니다. – chad
@chad 아마도 Verifier와 auth가 어떻게 작동하는지에 달려 있습니다. 세션 중에 accessToken이 변경되지 않으면 로그온하는 동안 액세스 토큰을 초기화하고 다시는 걱정할 필요가 없습니다. 변경해야한다면, 인터셉터가 필요로하는 액션에 accessToken을 설정합니다 (인터페이스, 주석 등으로 표시 할 수 있음). –
Dave Newton에게 특별히 답변 해 주셔서 감사합니다. 비슷한 코드에 맞게 코드를 수정 했으므로 이제는 매우 명확합니다. 이제 FB 인증 문제를 해결해야하지만 또 다른 주제입니다. 인터셉터를 사용하라는 제안을 조사 할 것입니다. 고맙습니다 :) – IsabelPM