栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

微信小程序+SSM后端获取openid,用getUserProfile

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微信小程序+SSM后端获取openid,用getUserProfile

这篇主要是用来记录具体实现方法的,算是在网上查了很久东拼西凑的半成品吧,为什么是半成品呢,因为没有对数据进行分类,算是做了一半,因为我想用的unionID但是这个方法只能获取openID,所以就不想做全了,验证可以获取数据就ok了,剩下的是比较简单的问题。

直接上代码
微信小程序端js

suibianshenme:function(){
    

    //第一步获取授权,得到用户的openid和unionid
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
      
        wx.login({
          success: res =>{
              let code = res.code //这里获取的就是登陆的code,可以传送给后端来换取openid和unionid      
              wx.request({
                url: 'https://你服务器的链接',
                data:{
                  code:code                  
                },
                method:'GET',
                header:{
                  'content-type':'application/json'
                },
                success (res) {
                  console.log(res);   //这里获取的res中就有你要的信息了,我只得到了openid                 
                },
                fail:function(res){
                  console.log("失败了");
                }      
              })          
       }
      })
      }
    })  
  }

微信端就这么简单,因为getUserInfo做了修改不能直接用了,所以改用了getUserProfile,获取授权,然后wx.login用来获取code,然后用wx.request把这个code传给后端的服务器,服务器再根据这个code获取到我想要的用户信息,包含openid、unionid,(但是我只获取到了openid)

下面是java后端SSM下的Controller层代码

@ResponseBody
	@RequestMapping(value="wxhqsq.action",produces = "text/plain;charset=utf-8")
	public String getUid(String code,HttpServletRequest request) {
		
		String appid="你的微信小程序appID";
		String appsecret="你的微信小程序appSecret";
		//code就是传进来的参数code
		//下面这个链接就是用来返回数据的接口地址
		String url="https://api.weixin.qq.com/sns/jscode2session?appid="+appid+"&secret="+appsecret+"&js_code="+code+"&grant_type=authorization_code";
		
		//进行网络请求
		RestTemplate restTemplate = new RestTemplate();
		ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
		//根据返回值进行后续操作
		if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) {
	            String sessionData = responseEntity.getBody();
	            return sessionData;
			}else {
				return "nothing to got";
			}
	}

你可以在后端把获得的sessionData用Json处理一下然后把有用的数据传回前端,这里就不写了。

用这个方法比较好的地方就是不需要解码,可以直接获取openid等数据。我看看是不是有什么地方不对,为什么没有unionid,然后再更。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/299430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号