안녕하세요 도와주신덕분에 목표달성에 멀지 않았습니다.
게시글 insert시에 페이스북 타임라인으로 연동되도록 구현하고 있는데요
연동이 끝나면 1. insert_ok.jsp 에서 "수정되었습니다" 라는 수정확인 창이 떠야하는데
callback 화면에서 벗어나지 못하고 있습니다.
callback 에서 어떤 처리를 해줘야하나요? 참고할 수 있는 함수도 좀 부탁드립니다.
항상 감사드려요.^^
1. insert_ok.jsp
<%@ page import = "org.apache.commons.io.FilenameUtils"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<%
request.setCharacterEncoding("UTF-8");
if(sns[i].equals("facebook")) {
%>
<%@ include file="/facebook/index.jsp"%> // facebook 선택시 토큰 갱신처리해주는 페이지를 include합니다.
<%
String accessToken = "";
String sqlkb = "select access_token from sns_info where sns_cd ='facebook' ";
ResultSet rskb = stmt.executeQuery(sqlkb);
if(rskb.next()){
accessToken = rskb.getString("access_token");
}
rskb.close();
FacebookClient facebookClient = new DefaultFacebookClient(accessToken);
FacebookType publishMessageResponse = facebookClient.publish("me/feed", FacebookType.class, Parameter.with("message", "페이스북 연동 테스트입니다."));
}
%>
<body>
<form method="post" name="edit" id="edit">
</form>
<%@ include file="/include/db/db_close.jsp"%>
<script type="text/javascript">
//<![CDATA[
alert("수정되었습니다.");
opener.reloading()
self.close()
//]]>
</script>
</body>
</html>
2. index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>twitter api</title>
</head>
<body>
fb api<br/>
<%
String appID = "4684213578220565";
String callbackUrl = "http://" + request.getServerName() + "/facebook/callback.jsp";
String oauthUrl = "https://www.facebook.com/dialog/oauth?" +
"client_id="+ appID + "&redirect_uri=" + URLEncoder.encode(callbackUrl, "UTF-8")+
"&scope=offline_access";;
response.sendRedirect(oauthUrl);
%>
</body>
</html>
3. callback.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import ="java.net.*,java.io.*" %>
<%
String code = request.getParameter("code");
String appID = "4684213578220565";
String appSecret = "1dasd0b51bd7w8a8cb334a45d66b1se3d";
String callbackUrl = "http://localhost/facebook/callback.jsp";
String access_token_url = "https://graph.facebook.com/oauth/access_token?"
+ "client_id="+ appID
+ "&redirect_uri=" + URLEncoder.encode(callbackUrl, "UTF-8")
+ "&client_secret=" + appSecret + "&code=" + code;
URL yahoo = new URL(access_token_url);
URLConnection yc = yahoo.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String accessToken = null;
String accessToken2 = null;
accessToken = in.readLine();
accessToken = accessToken.substring(accessToken.indexOf("=")+1, accessToken.indexOf("&"));
in.close();
sql = "update sns_info set ";
sql += "access_token='" + accessToken + "'";
sql += "where sns_cd='facebook'";
try{
stmt.executeQuery(sql);
conn.commit();
}catch(Exception e){
conn.rollback();
}
%>
작업 완료후 페이지 이동이 문제라면 자바스크립트로도 가능합니다.
callback.jsp 파일 jsp 코드가 끝나고 마지막에 자바스크립트로 페이지를 이동해보세요.
<script type="text/javascript">
//<![CDATA[
location.href = 'insert_ok.jsp';
//]]>
</script>