我需要向谷歌验证用户电子邮件和密码。我使用的是AppEngine+Java环境。谷歌API中有任何规定吗?
目前我正在使用
ContactService client = new ContactService ("yourCompany-yourAppName-v1");
client.setUserCredentials("user@example.com", "pa$$word");
我需要替换这个谷歌API我需要用谷歌而不是应用程序来验证用户
请建议我怎么做。
在您的最后一条评论中,您说google用户名和密码已在客户端中输入并在服务器中验证。这是不可能的,谷歌已经否决了应用程序捕获密码的能力,这太棒了
唯一的方法是使用oauth2,但除此之外,您还需要传递一个特殊的参数&max_auth_age=0
。在这一点上,这个问题基本上是重复的:没有提示使用OAUth2进行重新身份验证。为什么以及如何强制
但是我没有标记重复,因为你的情况不同
详细解释oauth不是这个答案的一部分,因为它在官方文档和许多指南中都有很好的解释。不要使用内置的appengine userService。相反,配置appengine页面,使它们都是公共的,并在顶部实现oauth2,例如,使用现有的google+javascript signin库(你不确定这些库是否允许你设置max_auth_age参数。如果不允许,你需要滚动你自己的oauth2"客户端3格"流在该流程中,客户端每次都会看到谷歌登录页面,在客户端流程完成后,客户端最终会收到一个访问令牌,该令牌是客户端发送给服务器的,用于验证用户是否输入了正确的用户名和密码。如果你包含了正确的范围(userinfo.email范围),那么服务器可以使用该访问令牌向谷歌询问生成令牌的用户名,因此你已经验证了客户端确实登录了谷歌,并且你知道他们的电子邮件
但您不会收到密码。只需足够的信息即可对用户进行身份验证。
这个问题不是很清楚,我试着用两种方式回答。
1) 使用自定义用户名和密码对appengine上的用户进行身份验证。
要做到这一点,你需要"经典"的方式,我建议你使用像Spring这样的框架和他的模块"Spring-security",看看这个例子。
2) 使用Google帐户对appengine上的用户进行身份验证。
这是我认为最好的方法,你只需要遵循这个指南。