我正在构建一个登录模块,您可以在其中使用各种社交网络帐户登录。第一步是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 ......