因为 开发者中心 不再提供服务
所以 只能用别人写的 固定的 项目名称 和 clietid 还有一些注册者 注册时 固定的东西
比如前台必须 这样写
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<H1>欢迎光临</H1>
<div>
请您使用第三方平台账号登陆:
<span id="login"></span>
</div>
<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("http://127.0.0.1/appstore/user/userLogin.do"),
domid = "login",
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%2Cqqweibo%2Ckaixin%2Crenren&size=-1&button_type=4&client_id=m6fO55eQNQaU4MmSR8xOSqj7&view=embedded&t=" + t;
script.src = src;
})();
</script>
</body>
</html>
然后 后台
@RequestMapping("userLogin")
public String userLogin(HttpServletRequest request,Model model){
//System.out.println("获取第三方信息");
//获取百度社会化服务传递的code
String code = request.getParameter("code");//应该是用 哪个第三方登录
//获取token url
String url="https://openapi.baidu.com/social/oauth/2.0/token";
//social redirect_uri registered in developer.baidu.com //我改了
String redirect_uri =
"http://127.0.0.1/appstore/user/userLogin.do";
Map<String, String> paramsMap =new HashMap<String, String>();
paramsMap.put("grant_type", "authorization_code");
paramsMap.put("client_id", "m6fO55eQNQaU4MmSR8xOSqj7");
paramsMap.put("client_secret","TOo2xAASovK4msjc1unmu7PqyxBc1gvV");
paramsMap.put("redirect_uri", redirect_uri);
paramsMap.put("code", code);
//获取令牌token相关信息 信息格式如下
/*{"expires_in":2592000,"access_token":"51.5cede4ef93fcab28a58f6e7d07f09b3e.2592000.1483158607.2852507892-8334948",
"session_secret":"4ef98f7defb795f1b1441e3b89aa49e5","session_key":"8aKDCM\/GXzrZ0r1+MKloY9ll1MBYQIiczgJvNetVfKSL1t++BUQ1J4xP+JA+8Hjvt1HzDhxFPd+xxYZDAL2qDzOeV7Uvo+Uedg==",
"name":"UU\u6c34\u74f6UU","media_uid":"4220861533","social_uid":2852507892,"media_type":"baidu"}*/
String returnJson =HttpUtil.post(url, paramsMap);//工具类
//获取 access_token 还有 social_uid 并放入 session 备用
String access_token =
JSONObject.fromObject(returnJson).get("access_token").toString();
String social_uid =
JSONObject.fromObject(returnJson).get("social_uid").toString();
request.getSession().setAttribute("access_token", access_token);
//看看是否绑定
url = "https://openapi.baidu.com/social/api/2.0/user/bind_status";
paramsMap.clear();
paramsMap.put("access_token", access_token);
String bind = HttpUtil.post(url, paramsMap);
Integer bdInfo =
(Integer) JSONObject.fromObject(bind).get("error_code");
System.out.println(bind);
if(bdInfo!=null){
//!=null就说明 是 152 所以 就是 没绑定
System.out.println("去绑定");
String socialName =
JSONObject.fromObject(returnJson).get("name").toString();
model.addAttribute("userName",socialName);
model.addAttribute("social_uid",social_uid);
return "user/complete_userInfo";
}else{
//为 null 说明绑定了 因为 返回的 json里 没有 error_code 这个键
User user = us.checkSocial(social_uid);
request.getSession().setAttribute("user",user);
System.out.println("回主页");
return "redirect:/index.jsp";
}
//social_uid 每个人不一样 但每个人的是固定的
}
//绑定的同时 把信息存入自己数据库
@RequestMapping("saveUser")
@ResponseBody
public Integer saveUser(User user,HttpServletRequest request){
String access_token = null;
Object obj =
request.getSession().getAttribute("access_token");
if(obj!=null){
access_token = obj.toString();
}
try {
us.saveUser(user,access_token);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
return user.getId();
}
@Override
public void saveUser(User user,String access_token) throws Exception{
um.saveUser(user);
if(user.getSocial_uid()!=null){
String url = "https://openapi.baidu.com/social/api/2.0/user/bind";
Map<String, String> paramsMap = new HashMap<String, String>();
String uid = user.getId().toString();
String uid_sign = Md5Util.getMD5String(uid+"TOo2xAASovK4msjc1unmu7PqyxBc1gvV");
System.out.println(uid_sign);
paramsMap.put("access_token",access_token);
paramsMap.put("uid",uid);
paramsMap.put("uid_sign",uid_sign);
String resultjson = HttpUtil.post(url, paramsMap);
Integer result =
(Integer) JSONObject.fromObject(resultjson).get("result");
//System.out.println(result);
if(result==0){
throw new Exception();
}
}
}