Задать вопрос
Ответы пользователя по тегу OAuth
  • Выбрасывание неавторизованного пользователя

    NafanyaVictorovna
    @NafanyaVictorovna Автор вопроса
    что касается инициирования нажатия на кнопку "вход" (при авторизации) - функция перенаправляет на сервлет:
    public void common (String use){
    // use - сюда передаётся название страницы, на которую осуществляется переход
    try {
    FacesContext ctx = FacesContext.getCurrentInstance();
    ExternalContext ectx = ctx.getExternalContext();
    HttpServletResponse response = (HttpServletResponse) ectx.getResponse();
    OAuth.setAddress(use);
    response.sendRedirect("https://oauth.vk.com/authorize?client_id=ВАШИ_... пойдёт");
    //redirect_uri="localhost:8080/My/OAuth" - у меня, My - приложение, OAuth -сервлет
    ctx.responseComplete();
    }
    catch (IOException ex) {
    Logger.getLogger(InformationController.class.getName()).log(Level.SEVERE, null, ex);
    }
    }
    сам сервлет выглядит так:

    package entity;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.URL;
    import java.net.URLConnection;
    import java.net.URLEncoder;
    import javax.enterprise.context.SessionScoped;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    /**
    *
    * @author Nafanya Victorovna
    */
    @WebServlet(name = "OAuth", urlPatterns = {"/OAuth"})
    public class OAuth extends HttpServlet {

    private static final String client_id = "ТУТ СВОЁ";
    private final String redirect_uri="localhost:8080/My/OAuth";
    private static final String client_secret="ВАШ КЛЮЧ";
    private static String address = "List"; //у меня это главная страница

    public static void setAddress(String str){
    OAuth.address = str;
    }

    public String Redirect() {
    String reference = "localhost:8080/My/faces/information" + address + ".xhtml";
    address = "List"; //возвращаем в начальное состояние
    return reference;
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    String code = request.getParameter("code");
    if(code == null || code.equals("")) {}
    response.getWriter().println(code);
    String token = null;
    try{
    String address = "https://oauth.vk.com/access_token?"
    + "client_id="+client_id
    +"&redirect_uri="+URLEncoder.encode(redirect_uri)
    +"&client_secret="+client_secret
    +"&code="+code;

    URL url = new URL(address);
    URLConnection connection = url.openConnection();
    BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String temp = null;
    while((temp = reader.readLine()) != null){
    token += temp;
    }
    token = token.replace("null","");
    }catch(Exception e) {}
    //проверка доступа
    if(token.contains("access_token")) {
    //пер еход куда необходимо пользователю
    response.sendRedirect(Redirect());
    } else {
    // перенаправляем на стартовую
    response.sendRedirect("localhost:8080/My/faces/information/Login.xhtml");
    }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
    return "Short description";
    }
    }
    Ответ написан
    Комментировать