微信小程序获得openid和用户信息

裴翰学
2023-12-01

1、获得openid可以直接app.js中获得

wx.login({
  success: function (res) {
     if (res.code) {
        //这里存储了appid、secret、token  
        var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + _this.globalData.appid + '&secret=' + _this.globalData.AppSecret + '&js_code=' + res.code + '&grant_type=authorization_code';
        http.get(url,{},res=>{
          // console.log(res);
          var openid = res.data.openid;
          wx.setStorage({
              key:"openid",
              data:{"openid":openid}
          })
        })
      } else {
          console.log('获取用户登录态失败!' + res.errMsg)
      }
   }
});

1、2最简单获得用户信息方法

wx.getUserProfile({
    desc: '用于完善会员资料', 
    success: (res) => {
      var name = res.userInfo.nickName;//用户微信名称
      var img = res.userInfo.avatarUrl;//用户头像
    })
})

2、在封装方法中获得用户信息,创建文件http.js,编写同时封装gat和post,上面get调用这里的get请求获得openid的。


// 封装gat
function get(url,date,res){
  wx.request({
    url: url, //仅为示例,并非真实的接口地址
    data: date,//数据格式{'name':1,'xx':2}
    header: {'content-type': 'application/json'},// 默认值get,
    method:'get',
    dataType:"json",
    responseType:"text",
    success (e) {
      res(e);
    },
    fail: ()=>{
      wx.showToast({
        title: '系统繁忙,请联系管理员',
        icon: 'none',
        duration: 2000
      })
    }
  })
}
// 封装post
function post(url,date,res){
  wx.request({
    url: url, //仅为示例,并非真实的接口地址
    data: date,//数据格式{'name':1,'xx':2}
    header: { "Content-Type": "application/x-www-form-urlencoded"},//post
    method:'post',
    dataType:"json",
    responseType:"text",
    success (e) {
      res(e)
    },
    fail: ()=>{
      wx.showToast({
        title: '系统繁忙,请联系管理员',
        icon: 'none',
        duration: 2000
      })
    }
  })
}
var _this = this;
// 登录
function name_login(url,openid,e){
  wx.getUserProfile({
    desc: '用于完善会员资料', 
    success: (res) => {
      wx.setStorage({
        key:"name_login",
        data:res.userInfo
      })
      var data = {'equipment':1,'appid':'微信appid','openid':openid,"user":res.userInfo.nickName,'img':res.userInfo.avatarUrl};
      var urls = url+"/wxapp/add";
      post(urls,data,es=>{
        console.log(es)
        if(es.data.message == "添加成功"){
          var da = es.data.data;
        }else{
          //用户已存在
          var da = es.data.data[0];
        }
        wx.setStorage({
          key:"username",
          data:da
        })
      })
      e(res)
    }
  })
}

// 使用
// const app = getApp()
// var http = require("../../utils/http/https")
// var url = app.globalData.apphttp+"/wxapp/1";
// http.get(url,1,res=>{
//   console.log(res)
// })

module.exports = {
  get,
  post,
  name_login,
}
/**
     * 获得openid
     * */
    public function getOpenid(Request $request){
        $js_code = $request->get("js_code");
        $url = "https://api.weixin.qq.com/sns/jscode2session"."?appid={$request->appID}&secret={$request->appSecret}&js_code={$js_code}&grant_type=authorization_code";
        $date = $this->curl_get($url);
        return json(['code'=>200,'data'=>$date]);
    }
    /**
     * 发起get请求
     * */
    public function curl_get($url){
        $getUrl = file_get_contents($url);
        $data = json_decode($getUrl, true);
        return $data;
    }

 

 

 类似资料: