一、配置网页授权域名不能带http,www
二、获取用户信息
package com.dongpeng.controller;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.dongpeng.utils.HttpUtils;
@Controller
public class OAuthTokenController {
public static final String APP_ID="";
public static final String APP_SECRET="";
/**
* 跳转到微信端获取code信息
* @return
* @throws UnsupportedEncodingException
*/
@RequestMapping("/auth")
public String auth() throws UnsupportedEncodingException {
StringBuilder authUrl = new StringBuilder("https://open.weixin.qq.com/connect/oauth2/authorize?");
authUrl.append("appid=").append(APP_ID).append("&").append("redirect_uri=").append(URLEncoder.encode("http://lianghao.xdp8.cn/getUserInfo","utf-8"))
.append("&").append("response_type=code").append("&").append("scope=snsapi_userinfo").append("&").append("state=1").append("#wechat_redirect");
System.out.println(authUrl);
return "redirect:"+authUrl.toString();
}
/**
* 通过code获取用户信息
* @param code
* @return
*/
@RequestMapping("/getUserInfo")
@ResponseBody
public String getUserInfo(String code) {
StringBuilder accessTokenUrl = new StringBuilder("https://api.weixin.qq.com/sns/oauth2/access_token?");
accessTokenUrl.append("appid=").append(APP_ID).append("&").append("secret=").append(APP_SECRET).append("&").append("code=").append(code).append("&grant_type=authorization_code");
String result = HttpUtils.get(accessTokenUrl.toString());
JSONObject jsonObject = JSON.parseObject(result);
StringBuilder userUrl = new StringBuilder("https://api.weixin.qq.com/sns/userinfo?");
userUrl.append("access_token=").append(jsonObject.getString("access_token")).append("&").append("openid=").append(jsonObject.getString("openid")).append("&lang=zh_CN");
return HttpUtils.get(userUrl.toString());
}
}
先访问/auth接口跳转微信端获取code
再通过redirect_uri指定回调地址跳转到getUserInfo接口获取用户信息