您的位置:首页 > 移动开发 > 微信开发

微信开发-网页授权获取用户信息

2016-12-12 11:45 423 查看
是不是大家经常能在微信公众号上访问某家应用的时候弹出这样一个页面

,当你点击确定之后,你进入这家应用的时候会惊奇的发现,你已经登录好了,并且你的微信信息都被他采集到了。

这是怎么做的呢,首先我们得了解几个微信开发接口。

1,授权接口

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect


2,获取access_token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code


3,获取用户信息

注意:调用此接口的前提,授权接口的scope必须为snsapi_userinfo,如果你不需要获取用户的相关信息,只需要获取用的openid,那本接口就不用调用到。

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN


上述三个接口为微信平台提供的api,具体可以参考官方文档。

下面是我写的一个简单的例子:

OauthGetCode.java

@RequestMapping(value = "/doOAuthLogin")
public String doOAuth(HttpServletRequest request, HttpServletResponse response

) throws IOException {

String appid = ConfigUtils.APPID;
String redirectUrl = ConfigUrlUtils.YUMING + "exhibitFront/OAuthLogin";
String state = "0";
request.setAttribute("appid", appid);
request.setAttribute("redirect_url", redirectUrl);
request.setAttribute("outTradeNum", state);

return "utils/OAuthGetCode";

}


OauthGetCode.jsp

<%@ page language="java" pageEncoding="utf-8"%>
<html>
<head>
<meta name="viewport" content="width=device-width,user-scalable=0">
</head>
<body>
<script language="javascript" type="text/javascript">
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid }&redirect_uri=${redirect_url }&response_type=code&scope=snsapi_userinfo&state=${outTradeNum }#wechat_redirect";
</script>

</body>
</html>


OAuthLogin.java

@RequestMapping(value = "/OAuthLogin")
public String oauthLogin(HttpSession session, HttpServletRequest request, @RequestParam(value = "code") String code,
Model model) {

// 获取用户的openid
String returnJSON = HttpTool.getToken(ConfigUtils.APPID, ConfigUtils.APPSECRET, "authorization_code", code);
JSONObject obj = JSONObject.fromObject(returnJSON);
System.out.println(obj);//获取到的用户信息
String openid = obj.get("openid").toString(); //例:获取用户信息,详细可以参考下面进行获取
/*
* 可获取的用户信息:
openid	用户的唯一标识
nickname	用户昵称
sex	用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province	用户个人资料填写的省份
city	普通用户个人资料填写的城市
country	国家,如中国为CN
headimgurl	用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
privilege	用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
unionid	只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。详见:获取用户个人信息(UnionID机制)

*/

return "redirect:/exhibitFront/index";

}


特别注意:测试授权获取用户信息必须要有公众号且开通了相应接口功能,

此处需要修改成自己访问的域名地址,否则会授权不通过的哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息