java二次开发微信公众号授权

这篇文章我想记录一下微信服务号二次开发怎么进行授权登录获取用户信息的。我用流程化的方式来阐述一下怎么实现微信授权取用户信息。


第一:
我们要取得微信授权,加入我们是从菜单栏点击某一个连接菜单进行实现的。所以此时我们菜单的连接就必须是:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
当然如果你选择静默授权,那scope就变成snsapi_base。当你单击这个菜单的时候,就会进行授权第一次访问。这个访问会返回一个code,它会和state的值一起作为参数传给你的重定向地址redirect_uri,而这个重定向url是 必须经过url encode转换的

第二:

在你的重定向uri这边的接口你就必须取出code的值,然后回调微信的

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
接口,这个接口可以返回特殊的access_token,它是针对用户授权的access_token, 跟我们上传文件或者创建菜单的accessToken是有所区别的。如果正常调用会返回这样数据格式的数据:
{
   "access_token":"ACCESS_TOKEN",
   "expires_in":7200,
   "refresh_token":"REFRESH_TOKEN",
   "openid":"OPENID",
   "scope":"SCOPE",
   "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

 
第三:

你拿着accesstoken的值还有针对用户的唯一标识openid就可以获取用户信息,然后你在这个接口中在通过get请求获取用户信息,访问地址为

http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
取到用户数据后就可以在这个接口中直接跳转到你的app,然后直接静默登录,或者显示用户信息。实现免登录。


其中还涉及到一个重新刷新accesstoken的操作,那是因为这个特殊的accesstoken是有时间显示,第一次的时间较短,再次刷新的时间可以更长。下面我把我接受授权的那个回调接口代码贴出来。当然你那个redirect_uri就要指向这个接口

	
	@RequestMapping(value="/cardniu/mystore",method=RequestMethod.GET)
	public String gotoMyShop(HttpServletRequest request,Model model){
		log.info("=============进入授权回调接口=========");
		WeixinUtil weixinUtil = new WeixinUtil();
		String tempCode = request.getParameter("code");
		log.info("==========返回回来的code: "+tempCode+"==========");
			UserAccessToken userAccesssToken=weixinUtil.getUserAccessToken(tempCode);
			OpenUser userInfo = weixinUtil.getOpenUserInfo(userAccesssToken);
			JSONObject userInfoObject = JSONObject.fromObject(userInfo);
			log.info("=========获取到的用户信息:"+userInfoObject.toString()+"=========");
			model.addAttribute("userInfo", userInfo);	
			model.addAttribute("userToken", userAccesssToken);
			model.addAttribute("code", tempCode);
			return "myStore/myShop";
	}



  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值