• 微信小程序+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 appid="wx*******";
    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>



  • 相关阅读:
    PHP设计模式之装饰器模式
    设计模式之建造者模式
    PHP代码优化技巧
    PHP数组排序函数array_multisort()函数详解
    MySQL索引背后的数据结构及最左原则
    Http协议详解
    把 hhkb 压在mac pro上面用
    cmd 里面运行git提示“不是内部或外部命令,也不是可运行的程序”的解决办法
    哈哈哈 迫于c#的语言特性java才加的注解
    java编程思想 英文版 打卡
  • 原文地址:https://www.cnblogs.com/shanchui/p/13697420.html
Copyright © 2020-2023  润新知