From 4f033fb25595a8ec5fce5d9a86785005fa778b02 Mon Sep 17 00:00:00 2001 From: Joo Date: Thu, 5 Jan 2017 12:56:05 +0900 Subject: [PATCH] init --- JSP_sample/1_request_authorization_code.jsp | 21 +++++ .../2_callback_and_request_access_token.jsp | 56 +++++++++++++ README.md | 1 + .../1_request_authorization_code.html | 20 +++++ .../CallbackAndRequestAccessToken.java | 83 +++++++++++++++++++ 5 files changed, 181 insertions(+) create mode 100755 JSP_sample/1_request_authorization_code.jsp create mode 100755 JSP_sample/2_callback_and_request_access_token.jsp create mode 100644 README.md create mode 100755 Servlet_sample/1_request_authorization_code.html create mode 100755 Servlet_sample/CallbackAndRequestAccessToken.java diff --git a/JSP_sample/1_request_authorization_code.jsp b/JSP_sample/1_request_authorization_code.jsp new file mode 100755 index 0000000..1eedb83 --- /dev/null +++ b/JSP_sample/1_request_authorization_code.jsp @@ -0,0 +1,21 @@ +<%@ page contentType="text/html;charset=utf-8"%> + + + + Tistory OAuth 2.0 JSP Sample - Example Authorization Code + + + + +
+ + + + +
+ + + diff --git a/JSP_sample/2_callback_and_request_access_token.jsp b/JSP_sample/2_callback_and_request_access_token.jsp new file mode 100755 index 0000000..0edfeae --- /dev/null +++ b/JSP_sample/2_callback_and_request_access_token.jsp @@ -0,0 +1,56 @@ +<%@ page contentType="text/html;charset=utf-8"%> + +<%@ page import="java.io.BufferedReader"%> +<%@ page import="java.io.InputStream"%> +<%@ page import="java.io.InputStreamReader"%> +<%@ page import="java.net.URL"%> +<%@ page import="java.net.URLConnection"%> +<%@ page import="java.security.Security;"%> + +<% + + /* + * OAuth2.0 단계중 Authorization code callback 및 Access Token 발급의 간단 예제 + */ + + String authorization_code = request.getParameter("code"); //최초 발급 요청으로 부터 받은 authorization code 입력 + + String client_id = "{발급받은 client_id를 입력하세요}"; + String client_secret = "{발급받은 client_secret 을 입력하세요}"; + String redirect_uri = "{등록시 입력한 redirect uri 를 입력하세요}"; + String grant_type = "authorization_code"; //반드시 이단계에서는 authorization_code 라고 입력 + + String url = "https://www.tistory.com/oauth/access_token/?code=" + authorization_code + + "&client_id=" + client_id + + "&client_secret=" + client_secret + + "&redirect_uri=" + redirect_uri + + "&grant_type=" + grant_type; + + try { + + System.setProperty ( "java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); + com.sun.net.ssl.internal.ssl.Provider provider = new com.sun.net.ssl.internal.ssl.Provider(); + Security.addProvider(provider); + + URLConnection connection; + InputStream is; + InputStreamReader isr; + BufferedReader br; + + URL url = new URL(url); + connection = url.openConnection(); + is = connection.getInputStream(); + isr = new InputStreamReader(is); + br = new BufferedReader(isr); + + while (true) { + if (br.readLine() == null) + break; + out.println(br.readLine()); + } + } catch (Exception e) { + e.printStackTrace(); + } + +%> + diff --git a/README.md b/README.md new file mode 100644 index 0000000..edc94cf --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# 티스토리 OAuth2 JSP/Servlet sample code diff --git a/Servlet_sample/1_request_authorization_code.html b/Servlet_sample/1_request_authorization_code.html new file mode 100755 index 0000000..ec4e03e --- /dev/null +++ b/Servlet_sample/1_request_authorization_code.html @@ -0,0 +1,20 @@ + + + + Tistory OAuth 2.0 JSP Sample - Example Authorization Code + + + + +
+ + + + +
+ + + diff --git a/Servlet_sample/CallbackAndRequestAccessToken.java b/Servlet_sample/CallbackAndRequestAccessToken.java new file mode 100755 index 0000000..96da343 --- /dev/null +++ b/Servlet_sample/CallbackAndRequestAccessToken.java @@ -0,0 +1,83 @@ +package oauth; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.URL; +import java.net.URLConnection; +import java.security.Security; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +@SuppressWarnings("serial") +public class CallbackAndRequestAccessToken extends HttpServlet { + + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + PrintWriter out = response.getWriter(); + + try { + + /** + * OAuth2.0 단계중 Authorization code callback 및 Access Token 발급의 간단 예제 + */ + + String authorization_code = request.getParameter("code"); //최초 발급 요청으로 부터 받은 authorization code 입력 + + String clientId = "{발급받은 client_id를 입력하세요}"; + String clientSecret = "{발급받은 client_secret 을 입력하세요}"; + String redirectUri = "{등록시 입력한 redirect uri 를 입력하세요}"; + String grantType = "authorization_code"; + + String requestUrl = "https://www.tistory.com/oauth/access_token/?code=" + authorization_code + + "&client_id=" + clientId + + "&client_secret=" + clientSecret + + "&redirect_uri=" + redirectUri + + "&grant_type=" + grantType; + + try { + + System.setProperty ( "java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); + com.sun.net.ssl.internal.ssl.Provider provider = new com.sun.net.ssl.internal.ssl.Provider(); + Security.addProvider(provider); + + URL url = new URL(requestUrl); + URLConnection connection = url.openConnection(); + + InputStream is = connection.getInputStream(); + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + + out.println(br.readLine()); + + } catch (Exception e) { + e.printStackTrace(); + } + + } finally { + out.close(); + } + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + public String getServletInfo() { + return "Short description"; + } + +} \ No newline at end of file