Пользователь GAE + OpenId + Oauth2 Java

77
6

У меня есть приложение GAE.

Мне нужно:


    Пользователь получает доступ к приложению
    Приложение обнаруживает, аутентифицирован ли пользователь.
    Если нет, перейдите на страницу входа в учетную запись google
    Пользователь регистрируется в
    Аккаунт Google перенаправляет на мое приложение
    Приложение проверяет, зарегистрирован ли этот пользователь в приложении
    Если да, приложение запрашивает у пользователя, соглашается ли он, что последний получает личную информацию gmail, контакты и т.д. из своей учетной записи google

Моя проблема в том, что я действительно потерял выполнение шагов 3, 5 и 7. Думаю, мне даже не нужно OpenId делать это. Я прочитал страницы кодов Google в Federated Login, OpenId, OAuth2 и User API, но я не могу найти способ их смешать (что нужно сделать на стороне клиента? Что нужно сделать на стороне сервера? Нужно ли создавать специальный сервлет? Могу ли я использовать асинхронные сервисы RPC? Мне нужно написать клиентскую клиентскую часть http-запроса и запросить специальный сервлет? Etc...). Поскольку я использую GAE, у меня нет файлов JSP, но только одна html-страница, содержащая минимальный минимальный html.


Я был бы очень доволен, если бы кто-то мог дать мне ссылки на исходный код (Java), чтобы сделать это.


Спасибо.

спросил(а) 2021-01-25T16:49:31+03:00 5 месяцев назад
1
Решение
77

У меня тоже было соединение с входами OpenID и OAuth с движком Google, и вы можете смешивать. В конце в моем случае я остановился только на Google и Facebook, поскольку провайдеры и логин Google встроены, а Facebook - OAuth. Правда, должен быть более удобный способ "добавить провайдера OAuth" и добавить себя как провайдера OAuth таким же образом, как мы добавляем Twitter и Facebook, однако на этом этапе он более или менее программирует его самостоятельно и после потока входа/выхода OAuth 2.0 независимо от того, какую реализацию вы выполняете (Java, python, PHP..), так как поток OAuth 2.0 одинаковый независимо от того, какой язык вы используете, например, OAuth с Facebook, который я использую с GAE:


enter image description here

Вы можете прочитать страницу OAuth для крупного провайдера Facebook, чтобы узнать, как вы должны выполнять поток аутентификации.

ответил(а) 2021-01-25T16:49:31+03:00 5 месяцев назад
45

public void doGet(HttpServletRequest req, HttpServletResponse resp)  throws IOException     
{

UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) //checks if USER is logged in or not
{
//if USER is logged in this code will execute or you can redirect user to another page
resp.setContentType("text/plain");
resp.getWriter().println("Hello, " + user.getNickname());
} else { //if USER is null, which means its not logged in then this code will execute.
String returnURL = "/home.jsp";
resp.sendRedirect(userService.createLoginURL(returnURL));
//createLoginURL method will provide the Google Login URL to sendRedirect method
//after user log in on the Google login page, the user will be redirected to the URL in returnURL variable

}
}

Источник = http://code.google.com/appengine/docs/java/gettingstarted/usingusers.html

ответил(а) 2021-01-25T16:49:31+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема