2011-12-14 39 views
2

我有一个GAE应用程序。
我需要:GAE用户+ OpenId + Oauth2 Java

  1. 用户获得访问应用程序
  2. 如果用户进行身份验证
  3. 如果没有应用程序检测,重定向到Google帐户登录页面
  4. 用户登录
  5. Google帐户重定向到我的应用程序
  6. 应用程序检查该用户是否在应用程序中注册
  7. 如果是的话,应用程序要求用户如果他同意,后者获得私人信息的Gmail,通讯录,(等)从他的谷歌帐户

我的问题是,我真的失去了做步骤3, 5和7.我认为我甚至不需要OpenId来这样做。我已经阅读了关于联合登录,OpenId,OAuth2和用户API的谷歌代码页,但是我找不到将它们全部混合在一起的方法(将什么放在客户端?将什么放在服务器端?我需要创建一个特殊的Servlet?我可以使用RPC异步服务吗?我需要编写一个http请求客户端并要求特殊的servlet吗?等等)。在我使用GAE时,我没有任何JSP文件,只有一个入口点html页面,其中包含所需的最小html。

如果有人能给我链接到源代码(Java)来这样做,我会非常高兴。

谢谢。

+0

你说的是一个人的谷歌ID有什么看法?或者仅限来自您的域名中拥有Google应用帐户的人员? – Dave 2011-12-14 15:43:34

+0

你可能想看看这个:http://camel.apache.org/tutorial-oauth.html – 2011-12-14 16:35:31

+0

@Dave我一般需要谷歌ID,应用程序应该确定用户是否连接,如果不重定向到谷歌账户。我没有使用任何jsp文件,但只有一个HTML文件(GAE),我希望它的代码最少。我知道如何使用OAuth访问Gdata。我想知道在EntryPoint类中放什么,以及在服务器端写什么。 – user1098001 2011-12-15 10:00:55

回答

2

我也有谷歌应用引擎的OpenID和OAuth登录混合,你可以混合。最后在我的情况下,我决定只提供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

你可能需要阅读大型供应商Facebook的OAuth页面,以了解如何执行认证流程。

0
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