1

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

LinkedIn 部分工作正常,但 Google 部分却不行。我认为问题出在身份验证之前的代码上,因为返回 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 的框架登录了谷歌,它就像一个魅力。只是现在,因为我想使用几个社交网站,我不想继续重新发明轮子,而只是使用 socialauth ......

4

2 回答 2

0

Google OpenId 身份验证端点是https://accounts.google.com/o/openid2/auth,OAuth2 端点是 /o/oauth2/auth。您需要将最终用户重定向到 OAuth2 端点以告诉(或“强制”)Google 使用 OAuth2。

于 2013-03-28T21:45:04.670 回答
0

通过https://github.com/3pillarlabs/socialauth/wiki/Sample-Properties

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

  • www.google.com.request_token_url
  • www.google.com.authentication_url
  • www.google.com.access_token_url
于 2015-03-18T17:52:38.467 回答