что касается инициирования нажатия на кнопку "вход" (при авторизации) - функция перенаправляет на сервлет:
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";
}
}