Пользователь GAE + OpenId + Oauth2 Java - PullRequest
2 голосов
/ 14 декабря 2011

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

  1. Пользователь получает доступ к приложению
  2. Приложение определяет, аутентифицирован ли пользователь
  3. Если нет, перенаправить на страницу входа в учетную запись Google
  4. Пользователь входит в систему
  5. Учетная запись Google перенаправляет в мое приложение
  6. Приложение проверяет, зарегистрирован ли этот пользователь в приложении.
  7. Если да, приложение запрашивает у пользователя, согласен ли он, чтобы последний получил личную информацию gmail, контакты и т. Д.) Из своего аккаунта Google

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

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

У меня тоже было сочетание OpenID и OAuth-логинов с google app engine, и вы можете смешивать. В конце в моем случае я остановился только на 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, чтобы узнать, как вам следует выполнять процедуру аутентификации.

0 голосов
/ 15 декабря 2011
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

...