jsp实现第三方登录
2018-03-11 19:48
204 查看
转自http://blog.csdn.net/tryitboy/article/details/48173827对于一般的应用,使用百度开放服务平台这样的平台提供的社会化服务即可满足用户的日常使用需要。
首先打开:
百度开放服务平台
点击右上角的:管理控制台——开发者服务管理
进入开发者服务管理后可以新建自己的工程。
建立好后如下图所示:
百度会提供一个API key和一个密钥,这个一会儿会用,先打开显示更多——社会化服务。
首先进入回调地址设置,填写第三方登录成功后的action地址:
注意这里的地址不能写成localhost,必须是127.0.0.1。
填写完成后回到上一页,打开“PC端JS组件设置”。
这里可以自己设置下第三方登录的网站以及样式,设置好以后点击生成页面js代码。
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
生成代码后copy到项目的登录页面即可,在登录框下新建个div节点同js保持一致。最终样式如下:
下面为登陆成功后的action:
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
2930
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直接设置为密码,但以后登录时只能使用第三方。
首先打开:
百度开放服务平台
点击右上角的:管理控制台——开发者服务管理
进入开发者服务管理后可以新建自己的工程。
建立好后如下图所示:
百度会提供一个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>1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
生成代码后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"); // 接收code String code = request.getParameter("code"); // 发送post请求,根据code获取token 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); // 唯一ID String social_uid = JSONObject.fromObject(json2).get("social_uid") .toString(); System.out.println(social_uid); /* * Boolean flag = service.getUser(Integer.parseInt(social_uid)); * System.out.println(flag); */ //下面是该项目的注册及登录方法,可以选择无视 // if (flag) { 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; // 通过u_id自动生成一个u_info的记录,只含有u_id和i_id boolean isInfo = userInfoService.ser_newUserInfo(u_id); // 再通过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) { // TODO Auto-generated catch block e.printStackTrace(); } // // user.setSocial_uid(Integer.parseInt(social_uid)); // service.saveUser(user); // System.out.println("保存用户信息成功"); // } else { // User user = service.getUser2(social_uid); // System.out.println("读取用户信息成功"); // } } }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
2930
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直接设置为密码,但以后登录时只能使用第三方。
相关文章推荐
- android调用第三方api实现用户数授权登录机制详解
- jsp Filter 实现编码过滤,和登录验证
- Android第三方QQ登录、获取个人信息、分享实现
- QQ实现第三方登录
- thinkPHP5项目中实现QQ第三方登录功能
- CocoaPods的安装及使用/利用开源库Diplomat实现分享及第三方登录/git的使用
- thinkPHP5项目中实现QQ第三方登录功能
- 腾讯QQ第三方登录的实现
- 微信第三方登陆,无需注册一键登录,获取用户信息,PHP实现方法.
- Web实现QQ第三方登录
- jsp实现简单的登录与注销功能
- [置顶] Java Web 实现 QQ第三方登录
- JSP+Servlet实现登录功能.
- Android 实现qq第三方登录并获取qq基本信息
- Jsp 操作 Cookie 实现自动登录
- iOS 实现第三方登录(图文)
- Servlet+JSP+MySQL实现用户管理模块之三、实现用户登录
- web实现QQ第三方登录 开放平台-web实现QQ第三方登录
- 在JSP中怎么实现系统登录后的退出
- Android-使用Android Studio实现第三方QQ登录