Java SocialAuth和谷歌

Java SocialAuth和谷歌,java,google-oauth,socialauth,Java,Google Oauth,Socialauth,我正在构建一个登录模块,您可以使用各种社交网络帐户登录。第一步是LinkedIn和Google LinkedIn部分工作正常,但谷歌部分工作不正常。我认为问题在于身份验证之前的代码,因为返回url有openid参数,而不是OAuth参数。这是重定向之前的代码: HttpSession session = request.getSession(); SocialAuthConfig config = SocialAuthConfig.getDefault(); try {

我正在构建一个登录模块,您可以使用各种社交网络帐户登录。第一步是LinkedIn和Google

LinkedIn部分工作正常,但谷歌部分工作不正常。我认为问题在于身份验证之前的代码,因为返回url有openid参数,而不是OAuth参数。这是重定向之前的代码:

HttpSession session = request.getSession();
SocialAuthConfig config = SocialAuthConfig.getDefault();
    try {
        config.load("/oauth_consumer.properties");
    } catch (Exception ex) {
        System.out.println(ex);
    }

    //Create an instance of SocialAuthManager and set config
    SocialAuthManager manager = new SocialAuthManager();
    try {
        manager.setSocialAuthConfig(config);
    } catch (Exception ex) {
        System.out.println(ex);
    }

    //URL of YOUR application which will be called after authentication
    String successUrl = "http://localhost:8080/ProjectName/completelogin.do";
    String url = "";
    try {
        url = manager.getAuthenticationUrl(type, successUrl).toString();
    } catch (Exception ex) {
        System.out.println(ex);
    }

    // Store in session
    session.setAttribute("authManager", manager);

    response.sendRedirect(url);
这是我为谷歌提供的oauth_consumer.properties部分

www.google.com.consumer_key = 81XXXXXX466.apps.googleusercontent.com
www.google.com.consumer_secret = WN0oXXXXXXXHoCeSocQK
www.google.com.custom_permissions=https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/userinfo.email

我可以强迫Google使用OAuth身份验证而不是OpenID身份验证吗?我已经用另一个使用OAuth的框架登录到google,它工作得很好。只是现在,由于我想使用多个社交网站,我不想继续重复使用socialauth…

Google OpenId身份验证端点是,OAuth2端点是/o/OAuth2/auth。您需要将最终用户重定向到OAuth2端点,以告知(或“强制”)Google使用OAuth2。

如果需要或需要传递额外参数,可以设置OAuth端点(RequestToken URL、授权URL和AccessToken URL)

  • www.google.com.request\u token\u url
  • www.google.com.authentication\u url
  • www.google.com.access\u token\u url

  • 是的,我知道这一点。问题是SocialAuth有一个使用混合策略的Google实现。它应该重定向到OAuth2URL,但它没有。我有一个谷歌和LinkedIn的工作登录名,但我无法使用Socialuth库让它工作。甚至linkedin也使用OAuth1,我想要OAuth2。另外,您是否知道授权服务器的正确URL和参数,因为我尝试的方法不起作用。我现在使用GoogleAPI客户端来交换访问令牌的代码,但我想自己调用url?使用参数response_type、client_id、redirect_uri、scope和state。或者你可以转储GoogleAPI客户端生成的URL(例如,通过调试)。这就是适合我的URL。但它返回代码,然后我需要用代码交换令牌。但我将尝试从api客户端获取URL:)thx