Java 如何使用OAuth2验证用户

Java 如何使用OAuth2验证用户,java,netbeans,oauth,oauth-2.0,google-oauth,Java,Netbeans,Oauth,Oauth 2.0,Google Oauth,我有一个应用程序和各种用户注册到此应用程序。我正在使用谷歌服务向我的应用程序注册用户。当用户尝试登录时,我使用用户OAuth1授权机制验证用户,使用用户emailId和密码 下面是我用来授权用户的代码 public static RestResponse accountsClientLogin(String accountType, String email, String passwd, String service, String source) throws IOException {

我有一个应用程序和各种用户注册到此应用程序。我正在使用谷歌服务向我的应用程序注册用户。当用户尝试登录时,我使用用户
OAuth1
授权机制验证用户,使用用户emailId密码

下面是我用来授权用户的代码

public static RestResponse accountsClientLogin(String accountType, String email, String passwd, String service, String source) throws IOException {
        String apiKey = GoogleAccountsServiceAuthenticator.getApiKey();
        String[][] pathParams = new String[][]{};
        String[][] queryParams = new String[][]{{"accountType", accountType}, {"Email", email}, {"Passwd", passwd}, {"service", service}, {"source", source}};
        RestConnection conn = new RestConnection("https://www.google.com/accounts/ClientLogin", pathParams, null);
        sleep(1000);
        return conn.post(null, queryParams);
    }
上面的代码对我来说非常有效,但随着谷歌从
OAuth1
转到
OAuth2
,我也不得不转到
OAuth2


我不知道如何使用
OAuth2
来做上述工作。我浏览了很多链接,但都是特定于应用程序的,我想使用emailId密码验证用户,就像我在以前版本的应用程序中所做的那样。如何从
OAuth1
迁移到
OAuth2

看起来您使用的是ClientLogin,而不是OAuth 1.0。我建议切换到OAuth2.0。您可以使用ApacheOLTU库来支持OAuth2.0。如果您打算这样做,我可以在示例代码方面为您提供帮助。

无法使用注释功能,这就是为什么要直接在回答中写我的建议

此链接可能会帮助您了解auth 2.0如何与google配合使用。

实际上,google使用OpenIDConnect作为一种机制来为您验证用户身份。您需要做的是将用户重定向到GoogleAuth服务器,用户将登录到google,然后用户将被重定向回您的应用程序,通过重定向url,您的应用程序将收到一个名为token的随机字符串。 有了这个令牌的帮助,你可以调用google rest API来获取用户信息,比如在重定向期间谁实际登录到google,因此你知道登录的用户

这是github上的演示


要运行演示,您需要向google注册应用程序,该应用程序可以唯一标识您的应用程序。

如果您不想自己完成此操作,google有两个选项:

如果您想支持多个身份提供程序(加上普通电子邮件和密码),请选择


如果您只想使用“使用谷歌登录”功能。

嘿,谢谢Saqib,但我正在使用谷歌OAuth。您可以使用
googleoauth2
向我提供示例代码吗。那对我会更有帮助。嘿@Ashutosh,谢谢你的明确解释。这有助于我更清楚地想象问题。我浏览了你提供的链接[即]。但我在exchangeCode[步骤4]中遇到了问题。它给了我400个json{error:“invalid_request”error_description:“缺少必需的参数:grant_type”}。我提到了一种授权类型,即
授权\u code
。我怎么知道的?@Ravindra请确保参数中没有换行符或空格。这是第一个请求,第二个请求,即第4步-发布