微信小程序+express获取token值

安装 request,express,body-parser

cnpm install express request body-parser --save

引入及使用

app.js文件中

const express =require("express");
const request=require("request");

const app=express();
const bodyParser=require("body-parser");
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());

//定义appid  和appSecret;
const app;
const appSecret="f8****************";

app.get("/api/login",(req,res,next)=>{
const code=req.query.code;
const url=`https;//api.weixin.qq.com/sns/jscode2session?appid=${appid}&secret=${appSecret}&js_code=${code}&grant_type=authorization_code`;
request(url,(err,wxresult,body)=>{
    res.send({
        code:1,
        msg:\'请求数据成功",
        data:body
    })
    })
})

//发送token值

app.get("/api/userToken",(req,res,next)=>{

const tokenUrl=`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${appSecret}`;

request(tokenUrl,(err,wxres,body)=>{

res.send({

code:1,

msg:\'操作成功\',

data:body

})

})

})

app.listen(3001,()=>{
    console.log(\'app is start");
})

me.js文件

// pages/me/me.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    baseUrl: getApp().globalData.baseUrl,
    isShow: false,
    userName: "游客",
    userInfo: {},
  },

  // 获取用户信息
  handlerGetUserInfo(e) {
    var that = this
    console.log(e)

    if (e.detail.errMsg == "getUserInfo:ok") {
      var newData = { userName: e.detail.userInfo.nickName, avatar: e.detail.userInfo.avatarUrl }

      // 收取获取用户信息
      wx.login({
        success: res => {
          console.log(res)
          const code = res.code
          // console.log(that.data.baseUrl + "api/login?code=" + code + "&userName=" + newData.userName + "&avatar=" + newData.avatar)
          wx.request({
            url: that.data.baseUrl + "api/login?code=" + code,
            success: res => {
              console.log(res)
              const openid = JSON.parse(res.data.data).openid
              const session_key = JSON.parse(res.data.data).session_key
              wx.setStorageSync("openid", openid)
              wx.setStorageSync("session_key", session_key)
              that.setData({
                isShow: true,
                userInfo: newData
              })

        // 获取token值

wx.request({

url: that.data.baseUrl+"api/userToken",

method:\'GET\',

success:res=>{

console.log(res)

// 保存token值

wx.setStorageSync(\'token\', JSON.parse(res.data.data).access_token)

}

})

// 保存用户信息
              wx.request({
                url: that.data.baseUrl + "api/saveInfo",
                method: "POST",
                data: newData,
                success: saveRes => {
                  console.log(saveRes)
                  wx.setStorageSync(\'userInfo\', saveRes.data.list[0])
                }
              })
            }
          })
        }
      })
    } else {

    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // 判断用户是否登录
    var userInfo = wx.getStorageSync(\'userInfo\')
    if (!userInfo) {

    } else {
      this.setData({
        isShow: true,
        userInfo: userInfo
      })
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})

me.wxml

<view class="header" wx:if="{{isShow}}">
      <image src="{{userInfo.avatar}}" class="user-img"></image>
      <view class="user-name">{{userInfo.userName}}</view>
 </view>
 <view class="header"wx:if="{{!isShow}}">
      <image src="" class="user-img"></image>
      <button class="like-btn-user-name" open-type="getUserInfo" bindgetuserinfo="handlerGetUserInfo">游客登录</button>
</view>