jsp ページ内に、別のクエリ文字列を含むリンクがあります。主にページングの目的で使用しました。
<a href='/test?page=1&code=${code}'>Page 1</a>
<a href='/test?page=2&code=${code}'>Page 2</a>
<a href='/test?page=3&code=${code}'>Page 3</a>
この jsp ページに初めてロードすると、すべて正常に動作します。リンクをクリックした瞬間に、以下のエラーが表示されます。
java.io.IOException: Server returned HTTP response code: 400 for URL: https://graph.facebook.com/oauth/access_token?client_id=xxx&scope=user_photos&redirect_uri=http://xxx.herokuapp.com/test&client_secret=xxx&code=xxx
このエラーがクエリ文字列にリンクされているかどうか疑問に思っていますか? JSP ページでページングが本当に必要なので、この問題を回避する方法はありますか?
私のサーブレットの中で...
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String code = req.getParameter("code");
String page = req.getParameter("page");
if(page == null){
page = "1";
}
String MY_ACCESS_TOKEN = "";
String redirect = "http://xxx.herokuapp.com/test";
String en_redirect = URLEncoder.encode(redirect, "UTF-8");
String en_code = URLEncoder.encode(code, "UTF-8");
String authURL = "https://graph.facebook.com/oauth/access_token?client_id=xxx&scope=user_photos&redirect_uri=" + en_redirect + "&client_secret=xxx&code="
+ code;
URL url = new URL(authURL);
String result = readURL(url);
String[] pairs = result.split("&");
for (String pair : pairs) {
String[] kv = pair.split("=");
if (kv[0].equals("access_token")) {
MY_ACCESS_TOKEN = kv[1];
}
} // end of for loop