2015-04-14 87 views
1

我需要驗證用戶電子郵件和密碼與谷歌。我正在使用App Engine + Java環境。 Google API中是否有規定?如何使用Google App Engine + Java驗證用戶,密碼?

目前我使用

ContactService client = new ContactService ("yourCompany-yourAppName-v1"); 
client.setUserCredentials("[email protected]", "pa$$word"); 

我需要更換這個谷歌的API。 我需要使用Google不應用程序對用戶進行身份驗證。

請指教我該怎麼做。

+0

你不能使用開放認證。 https://developers.google.com/identity/ – DaImTo

+0

你可以在這裏下載java的Google API示例http://samples.google-api-java-client.googlecode.com/hg/ –

+1

@lulliia哪一個?我只檢查了其中的4個,他們使用Oauth2或公共API密鑰。 – DaImTo

回答

1

在上次評論中,您說google用戶名和密碼是在客戶端輸入的,並在服務器中進行了驗證。這是不可能的,谷歌已棄用一個應用程序捕獲密碼的能力,這非常好。
要做到這一點的唯一方法是使用oauth2,但是您需要傳遞一個特殊參數&max_auth_age=0。 在這一點上,這個問題基本上是這樣的一個副本:No prompt for re-authentication with OAUth2. Why and how to force it?
但是我沒有標記重複,因爲你是一個不同的情況。
詳細解釋oauth不是這個答案的一部分,正如在官方文檔和許多指南中所解釋的那樣。不要使用內置的appengine userService。取而代之的是配置appengine頁面,使它們都是公共的,並在上面實現oauth2,例如使用現有的google + javascript登錄庫(你不確定這些是否允許你設置max_auth_age參數,如果不是,你需要推出你自己的oauth2「客戶端3-legged「的流程,在這個流程中,客戶端每次都會看到google的登錄頁面,客戶端流程完成後,客戶端將獲得一個訪問令牌,這個令牌就是它發送給服務器的驗證用戶輸入了正確的用戶名和密碼,如果你包含正確的範圍(userinfo.email scope),那麼服務器可以使用該訪問令牌向google請求生成該令牌的用戶名,因此您已驗證客戶端是否已登錄到Google並且您知道他們的電子郵件地址
但是您不會收到密碼。只需足夠的信息即可認證用戶。

+0

謝謝,我將使用OAUuth2.0實現用戶認證。 – yogesh

0

問題不是很清楚,我會嘗試以兩種方式作出迴應。

1)使用自定義用戶名和密碼在appengine上對用戶進行身份驗證。

要做到這一點,您需要「經典」的方式,我建議您使用像Spring這樣的框架,以及他的模塊「spring-security」,看看this sample

2)使用Google帳戶在appengine上驗證用戶身份。

這是我認爲最好的方式,你只需要遵循this指南。

+0

我需要不想在應用引擎上對用戶進行身份驗證,我需要使用密碼來驗證其他用戶的身份 – yogesh

+0

我編輯了我的問題。 – yogesh

+0

在我的回答中有兩種情況的解決方案,您是否嘗試了第一種? – aqquadro