2014-01-16 45 views
0

我正在使用適用於Google的Java API編寫桌面應用程序。我可以使用oauth2和REDIRECT URI進行身份驗證:urn:ietf:wg:oauth:2.0:oob這將給用戶一個代碼,將粘貼複製回我的應用程序。Java Google API oauth2 REDIRECT URI選項

我寧願有一個比這更好的工作流程,並用http://localhost:8080/myreceiver替代REDIRECT URI--或者我認爲有效的類似東西。

我的問題是 - 什麼是最好的方式來容易地提出一個基於Java的網絡服務器在這樣的地址,讓我自動接收此代碼並繼續oauth2身份驗證?谷歌API的一部分是否可以提供任何幫助?或者我應該看看一個標準的基於Java的Web服務器,如http://tjws.sourceforge.net/或其他?

任何意見會幫助我很多!

回答

0

我曾經開發過一個使用Google OAuth 2.0的android應用程序,並且我爲已安裝的應用程序使用了特殊的redirect_uri。當我發送特殊的redirect_uri請求時,它將顯示標題和正文中的代碼,就像官方文檔所說的那樣。但是這沒有意義,因爲這是一個糟糕的用戶體驗。所以我在應用程序中編寫代碼來檢測頁面標題並自動獲取代碼,這很容易,希望它有幫助。

代碼:

if(view.getTitle().contains("code=")) { 

webview.setVisibility(View.INVISIBLE); 

String title = view.getTitle(); 

    if (!handled) { 
     new ProcessToken(title,oAuth2Helper).execute(); 
    } 

} else 

{ 
    webview.setVisibility(View.VISIBLE); 
} 
+0

這將工作在Android上,但在Android以外的Java上工作不一樣,因爲您沒有API訪問客戶端機器上的瀏覽器窗口以外的Android。 – RenegadeAndy

0

最後我決定用tjws推出其當時我能寫其使用的getParameter(「準則」)一點點的servlet方法的一部分,一個小型Web服務器Servlet的doGet方法捕獲回調代碼。

很簡單 - 而且很好用戶友好。

+0

你有一個內置於Java的Web服務器,爲什麼不使用它呢?這是集中的證據,Strava提供了整個OAuth2的東西。 https://github.com/davidzof/strava-oauth/ –