2011-12-14 38 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