Все прикрутил и пример вставил, даже реализовал веб-проект. Но все время возвращает body=null
.
Вот код-класс для авторизации:
package com.dj.kz.djooga.users.service;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import com.github.scribejava.apis.GoogleApi20;
import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthRequest;
import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
public class UserAuthService {
private OAuth20Service service;
private String clientId = "1938140...";
private String secretId = "MCLXS...";
private String callback = "http://localhost:8080/djooga-webapp-admin/main";
private String scope = "https://www.googleapis.com/auth/userinfo.email";
private static final String PROTECTED_RESOURCE_URL = "https://www.googleapis.com/auth/userinfo.email";
private OAuth2AccessToken accessToken;
public UserAuthService(String authService) {
switch (authService) {
case "google":
service = new ServiceBuilder(clientId).apiSecret(secretId).callback(callback).scope(scope)
.build(GoogleApi20.instance());
break;
default:
break;
}
}
public String getUserInfo(String code) throws ExecutionException, InterruptedException, IOException {
this.accessToken = service.getAccessToken(code);
OAuthRequest rqs = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL);
service.signRequest(accessToken, rqs);
Response res = service.execute(rqs);
return res.toString();
}
public String getAuthURL() {
if (service != null)
return service.getAuthorizationUrl();
else
return "/error";
}
}
Вот, что возвращает метод getUserInfo
:
Response{code=200, message='OK', body='null', headers={Transfer-
Encoding=chunked, null=HTTP/1.1 200 OK, Alt-Svc=quic=":443"; ma=2592000;
v="39,38,37,35", Server=GSE, X-Content-Type-Options=nosniff, Date=Wed, 20
Sep 2017 03:07:32 GMT, Accept-Ranges=none, X-Frame-Options=SAMEORIGIN,
Cache-Control=private, max-age=0, Vary=Accept-Encoding, Expires=Wed, 20 Sep
2017 03:07:32 GMT, X-XSS-Protection=1; mode=block, Content-Type=text/plain}}
Сервлет на всякий случай:
package com.dj.kz.djooga.webapp.admin;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.dj.kz.djooga.users.service.UserAuthService;
public class MainServlet extends DispatcherServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.print("ok");
String code = request.getParameter("code");
if (code!=null) {
UserAuthService uas = new UserAuthService("google");
System.out.println("code");
String ui="";
try {
ui = uas.getUserInfo(code);
} catch (ExecutionException e) {
super.forward("/jsp/error.jsp", request, response);
e.printStackTrace();
} catch (InterruptedException e) {
super.forward("/jsp/error.jsp", request, response);
e.printStackTrace();
}
request.setAttribute("userInfo", ui);
super.forward("/jsp/welcom.jsp", request, response);
}
HttpSession session = request.getSession();
if (session.getAttribute("userId") == null) {
String url;
if (request.getSession().getAttribute("uas") == null) {
UserAuthService uas = new UserAuthService("google");
request.getSession().setAttribute("uas", uas);
url = uas.getAuthURL();
} else {
url = ((UserAuthService) request.getSession().getAttribute("uas")).getAuthURL();
}
request.setAttribute("authUrl", url);
super.forward("/jsp/auth.jsp", request, response);
}
}
}
И еще один вопрос: при авторизации надо сохранить tocken
?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Разрабатывается приложение, в котором используются фрагментыПытаюсь реализовать смену фрагмента по нажатию на любой item в recyclerView
В java все объект могут быть mutable и immutableПонятно, что, например, строка является immutable
Здравствуйте! Второй день пытаюсь пофиксить проблемуВ проекте пытаюсь достать данные из базы, но вылетает NullPointerException
Всем доброго дня! Сервер написан на Java + Spring framework + PostgresqlМне нужно выдавать JSON такого вида: