转自http://blog.csdn.net/tryitboy/article/details/48173827
对于一般的应用,使用百度开放服务平台这样的平台提供的社会化服务即可满足用户的日常使用需要。
首先打开:
百度开放服务平台
点击右上角的:管理控制台——开发者服务管理
进入开发者服务管理后可以新建自己的工程。
建立好后如下图所示:
百度会提供一个API key和一个密钥,这个一会儿会用,先打开显示更多——社会化服务。
首先进入回调地址设置,填写第三方登录成功后的action地址:
注意这里的地址不能写成localhost,必须是127.0.0.1。
填写完成后回到上一页,打开“PC端JS组件设置”。
这里可以自己设置下第三方登录的网站以及样式,设置好以后点击生成页面js代码。
<script type="text/javascript" id="bd_soc_login_boot"></script>
<script type="text/javascript">
(function(){
var t = new Date().getTime(),
script = document.getElementById("bd_soc_login_boot"),
redirect_uri = encodeURIComponent("替换为登录成功后的url"),
domid = "替换为登录组件的目标节点id",
src = "http://openapi.baidu.com/social/oauth/2.0/connect/login?redirect_uri=" + redirect_uri + "&domid=" + domid + "&client_type=web&response_type=code&media_types=sinaweibo%2Cqqdenglu%2Cbaidu%2Crenren&size=-1&button_type=4&client_id=ozLMOCp1zcUE25HbRrR0UKrl&view=embedded&t=" + t;
script.src = src;
})();
</script>
生成代码后copy到项目的登录页面即可,在登录框下新建个div节点同js保持一致。最终样式如下:
下面为登陆成功后的action:
public class SocialLogin extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
UserDao userDao = (UserDao) DaoFactory.getInstance("UserDao");
UserInfoService userInfoService = (UserInfoService) ServiceFactory
.getInstance("UserInfoService");
String code = request.getParameter("code");
Map<String, String> map = new HashMap<String, String>();
map.put("grant_type", "authorization_code");
map.put("code", code);
map.put("client_id", "ozLMOCp1zcUE25HbRrR0UKrl");
map.put("client_secret", "a08tWipbc42UAj0ERipVNi1Npdq3Y5I8");
map.put("redirect_uri", "http://127.0.0.1/LSZ/socialLogin");
String json = HttpUtils.postForm(
"https://openapi.baidu.com/social/oauth/2.0/token", map);
String access_token = JSONObject.fromObject(json).get("access_token")
.toString();
String json2 = HttpUtils
.get("https://openapi.baidu.com/social/api/2.0/user/info?access_token="
+ access_token + "&");
String username = JSONObject.fromObject(json2).get("username")
.toString();
System.out.println(username);
String social_uid = JSONObject.fromObject(json2).get("social_uid")
.toString();
System.out.println(social_uid);
User user = new User();
user.setUsername(username);
UserService userService = (UserService) ServiceFactory
.getInstance("UserService");
try {
Boolean isRegist = userDao.findUser(username);
if (isRegist) {
user = userService.login(username, social_uid, 1);
int userType = user.getUserState();
int u_id = user.getU_id();
UserInfo userInfo = userInfoService.ser_findInfo(u_id);
session.setAttribute("userInfo", userInfo);
session.setAttribute("u_id", u_id);
session.setAttribute("username", username);
session.setAttribute("userType", userType);
response.sendRedirect("index.do");
} else {
boolean isRegist2 = userService.regist(username, social_uid, 1);
user = userService.login(username, social_uid, 1);
int u_id = user.getU_id();
boolean isIntro = true;
boolean isInfo = userInfoService.ser_newUserInfo(u_id);
UserInfo userInfo = userInfoService.ser_findInfo(u_id);
if (isRegist2 && isInfo && (userInfo != null)) {
session.setAttribute("isIntro", isIntro);
session.setAttribute("userInfo", userInfo);
session.setAttribute("username", username);
session.setAttribute("u_id", u_id);
response.sendRedirect("index.do");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
在第三方登录的时候会生成一个social_uid,唯一,用来验证用户,该social_uid可以存在用户表中单独一列,让用户登录后重新设置密码,也可以将该social_uid直接设置为密码,但以后登录时只能使用第三方。