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

5 篇文章 0 订阅
3 篇文章 0 订阅

  是不是大家经常能在微信公众号上访问某家应用的时候弹出这样一个页面,当你点击确定之后,你进入这家应用的时候会惊奇的发现,你已经登录好了,并且你的微信信息都被他采集到了。

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

  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";

	}


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

 此处需要修改成自己访问的域名地址,否则会授权不通过的哦。

   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值