私はこのサイトの初心者で、これが最初の質問です。
Web サイトを作成する必要があり、Java と Struts2 を使用していますが、Struts2 は初めてです。
私のサイトでは、Facebook へのリクエストを行い、OAuth で認証を受ける必要があります。
アクション ページの execute メソッドですべてのプロセス (認証と保護されたリソースの要求) を実行しています。このプロセスは非常に複雑で、Facebook と Web の間で多くのリダイレクトが発生します。
先日、「複数のメソッドでアクションを作成しないでください。「実行」と実行したい操作(「createUser」など)で十分です」(http://freeopenidea.blogspot.com.es/より)を読みました。 2010/04/struts2-best-practices.html )。
ほとんどのコードは、最初に接続するときにこのプロセスを実行するため、別の瞬間にサイトの別の部分から呼び出すことができますが、連絡先リストを更新するためにこれ (または同様のこと) を実行できます。
1 - 必要なメソッド用に別のクラス (アクションではない) を作成し、それらを「実行」メソッドから呼び出す必要がありますか?
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;
}