Facebook接続APIを使用して、Facebookのアカウントからユーザーの基本データを取得しました。サーブレットを介してJavaアプリケーションから接続しています:
private void getUserMailAddressFromJsonResponse(String accessToken,
HttpSession httpSession) {
String email = null;
HttpClient httpclient = new DefaultHttpClient();
try {
if (accessToken != null && !"".equals(accessToken)) {
String newUrl = "https://graph.facebook.com/me?access_token="
+ accessToken;
httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(newUrl);
System.out.println("Get info from face --> executing request: "
+ httpget.getURI());
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget,
responseHandler);
JSONObject json = (JSONObject) JSONSerializer
.toJSON(responseBody);
System.out.println("Attributes inside Json "+json.toString());
String facebookId = json.getString("id");
String firstName = json.getString("first_name");
String lastName = json.getString("last_name");
email= json.getString("email"); // not founding email
// put user data in session
httpSession.setAttribute("FACEBOOK_USER", firstName + ","+lastName+","+email+","+facebookId);
} else {
System.err.println("Token za facebook je null");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpclient.getConnectionManager().shutdown();
}
// return email;
}
例外:
net.sf.json.JSONException: JSONObject["email"] not found
これは、URL を形成するマネージド Bean のメソッドです。
public String getFacebookUrlAuth() {
System.out.println("Called");
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
String sessionId = session.getId();
System.out.println("SessionId:" + sessionId);
String appId = "3607596261352927";
String redirectUrl = "http://localhost:8080/Gambak/index.sec";
String returnValue = "https://www.facebook.com/dialog/oauth?client_id="
+ appId + "&redirect_uri=" + redirectUrl
+ "&scope=email,user_birthday&state=" + sessionId;
System.out.println("return value: " + returnValue);
return returnValue;
}
奇妙なことに、私は 3 日前にメールを正常に受信し、正常に機能していました。今日試してみると、その例外が発生しました!!