关于微信小程序如何调用wx.login获取openId和用户信息

首先我们需要在微信开发小工具获取code临时登录凭证,下面是js文件也就是一些需要调用的函数。需要做这个的话我们需要上微信公众平台获取AppId和AppSecret

Page({
  data: {},
  onLoad: function (options) {
    //页面初始化调用本方法 options为页面跳转所带来的参数

  },
  tapClick: function () {
    //这个是微信提供的接口,调用成功之后会返回一个临时登录凭证
    wx.login({
      success: function (res) {
          console.log(res.code);
      }
    })
  },
  Click:function(){
    //这个是微信提供的接口,调用成功之后会返回一些用户基本的信息
    wx.getUserProfile({
      desc: '获取用户信息',
      success:(res)=>{
        console.log(res)
      }
    })
  }
})

这个是页面

<button type="primary" bindtap="tapClick">获取code</button>
<button type="primary" bindtap="Click">获取用户基本信息</button>

这是获取到的code

本来获取用户信息是getUserInfo但是微信官方已经把那个接口废弃了,只能获取到一些默认的信息了,现在这个wx.getUserProfile也只能获取用户名和头像之类的,我们获取到code之后,然后把code给到后端。后端代码如下,把code、应用id和密钥填上去就可以了

String appId = "";
String appSecret = "";
String code = "";
HttpResponse execute = HttpRequest.get("https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + "&secret=" + appSecret + "&js_code=" + req.getCode() + "&grant_type=authorization_code").execute();
JSONObject jsonObject = new JSONObject(execute.body());
if(jsonObject.containsKey("errcode")){
  throw new BusinessException("获取密钥和openId失败");
}
String openid = jsonObject.getStr("openid");
String sessionKey = jsonObject.getStr("session_key");
System.out.println("openId " + openid);
System.out.println("session_key " + sessionKey);

//HttpRequest用的是hutool的一个工具类,依赖如下
/*
     <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.4</version>
     </dependency>
/*

这样就可以获取到openId和密钥了,看他微信新更新的公告说用wx.login可直接获取openId,但是不知道为什么我的不行。

本来我以为用户信息需要解密才能获得,没想到他换这个wx.getUserProfile接口已经可以获得了,通过解密获得的信息和这个一模一样,只是后面多了一串签名之类的直接rawData,只是现在地区之类的啥都不能获取了,就只能获取昵称头像之类的,后面微信官方连头像都不能获取了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值