2015-04-14 62 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