簡體   English   中英

如何處理身份驗證回調?

[英]How to handle authentication callback?

我正在用Java開發Web應用程序。 我正在使用個人域appspot(googleappengine)。 我已經實現了三足式OAuth。 並且身份驗證工作正常。

這里的問題是在應用程序的第一次運行中。 雖然,我已登錄gmail,但未檢測到用戶名。 並重定向到登錄頁面。 登錄后,我將在appspot數據存儲中獲得可用數據。 但是,我無法將該數據附加到我的主頁:(

我的代碼是這樣的:

  • 首次請求Servlet的Ajax調用(home.html):

      $(document).ready(function(){ jQuery.ajax({ type: "get", url: "http://searcegadget2.appspot.com/RequestTokenServlet", success: function(msg){ if(msg.search('tr') != -1){ id = msg.split('</tr>').length - 1; $('#gadget').css('display', 'block'); $("tbody").append(msg); difference(); }else if(msg.search('form') != -1){ $('#gadget').css('display', 'none'); document.write(msg); }else if(msg.search('http') != -1){ $('#gadget').css('display', 'none'); document.location = msg; } },error: function(XMLHttpRequest, textStatus, errorThrown){ //alert(XMLHttpRequest.responseText); } }); }); 

我的表格div ID是#gadget ,並且具有塊顯示。 如您所見,我還將OAuth回調參數設置為home.html

  • RequestTokenServlet.java代碼:

     GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); oauthParameters.setOAuthConsumerKey(CONSUMER_KEY); oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET); oauthParameters.setScope("https://spreadsheets.google.com/feeds/"); oauthParameters.setOAuthCallback("http://searcegadget2.appspot.com/home.html"); oauthParameters.setOAuthType(OAuthParameters.OAuthType.THREE_LEGGED_OAUTH); UserService userService = UserServiceFactory.getUserService(); if (userService.isUserLoggedIn()) { //fetch row } else { out.print(userService.createLoginURL(request.getRequestURI())); } 

我的意思是,appspot返回html表行,並且它僅在任何瀏覽器中顯示該行。 雖然我希望該行被追加到我的主頁表中,但是我不能。

1個

另外,只有在我第一次登錄時才會發生這種情況。 稍后,當我再次瀏覽應用程序URL時,它將返回主頁,並將行附加到表中! 但是,當我重新啟動瀏覽器時,問題再次出現!

2

我希望在第一次通話時顯示第二個屏幕。

我該如何解決這個問題? 還有其他方法可以檢查用戶是否使用Java登錄嗎?

通常,您的GAE應用不會檢測到您沒有登錄google。

如果可以,那么任何GAE網站都可以在未經其允許的情況下自動登錄所有gmail用戶。 OpenID / OAuth不能這樣工作-出於安全原因,它需要用戶設計交互。

更新:

如果用戶未登錄,則userService.isUserLoggedIn()返回false,因此我想沒有返回HTML表。

順便說一句,如果用戶未登錄,則應將其重定向到Google登錄頁面:

response.sendRedirect(userService.createLoginURL(req.getRequestURI()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM