微信小程序-授权

news/2024/7/11 1:14:14 标签: es6, css, jquery, html, javascript
htmledit_views">

摆上官方给出授权流程图

对官方流程图理解:

2021-04-06-22-30-34

步骤:

1、首先我们通过微信中 wx.login()方法 获取 临时登录凭证code (有效期只有5分钟),并通过wx.request()提交code给开发者服务器。

2、开发者服务器把code和appid回传到微信方服务器,来获取session_key & openid;

注意:session_key是微信服务器生成的针对用户数据进行加密签名的密钥,不应该进行传输到客户端,所以通过生成3rd_session(它就是一个key,把session_key+openid存为value)

javascript">//授权弹框
function onlogin() {
  wx.login({
    success(res) {
      if (res.code) {
        //发起网络请求
        http.GetDataInfo('wxauth/getsessionkey', 'get', {
          appid: app.data.AppID,
          code: res.code
        }, function(result) {
          if (result.data.code == 10000) {
            //获取用户信息
            getUserInfos(result.data.data);
          } else {
            wx.showToast({
              icon: 'none',
              title: '获取微信用户信息失败',
              duration: 1000
            })
          }
        });

      } else {
        wx.showToast({
          icon: 'none',
          title: '登录失败!',
          duration: 1000
        })
      }
    }
  })
};

2、接着我们通过微信中wx.getUserInfo()方法获取如下信息,把session_key、encryptedData和iv传给后台服务器,来获取用户token等信息

javascript">//获取用户信息
function getUserInfos(uuid) {
  wx.getUserInfo({
    success: function(res) {
      var encryptedData = res.encryptedData;
      var iv = res.iv;
      app.globalData.userInfo = res.userInfo;
      http.GetDataInfo('wxauth/wxsmallusersave', 'post', {
        appid: app.data.AppID,
        uuid: uuid,
        type: 'userinfo',
        encryptedData: encryptedData,
        iv: iv
      }, function(result) {
        if (result.data.code == 10000) {
          wx.setStorageSync('token', result.data.data.token);
        } else {
          wx.showToast({
            icon: 'none',
            title: '获取token失败',
            duration: 1000
          })
        }
      });
    }
  })
};


http://www.niftyadmin.cn/n/908547.html

相关文章

VUE-插槽详细

一、什么是插槽slot? 插槽就是子组件中提供给父组件使用的一个占位符,父组件可以在这个占位符中填充任何模板代码。插槽的显示与不显示,以及怎样显示都是由父组件来决定。插槽模板是slot,它就是一个空壳子,因为他的显示…

Spark性能测试报告与调优参数

1、代码中尽量避免group by函数,如果需要数据聚合,group形式的为rdd.map(x>(x.chatAt(0),x)).groupbyKey().mapValues((x>x.toSet.size)).collection() 改为 rdd.map(x>(x.chatAt(0),x)).countByKey();或进行reduceByKey,效率会提高…

微信小程序--open-type无法弹出授权框

一、问题: 微信开发者工具中,调试基础库为2.15.0版本时,能弹出授权提示框,但发布后,在手机上查看就未弹出授权提示框? 二、思考: 1、手机上调试基础库版本应是最新的,授权弹框get…

[转]阅读tesseract-OCR(3.01)程序源码的一点心得体会

原文地址:http://blog.renren.com/share/32364603/13432350985 阅读tesseract-OCR(3.01)程序源码的一点心得体会 一、基本情况 时间:5月25日-6月15日(共3周) 源码大小:413M 所含文件数&#xff…

vue 中audio.play() 控制台报错:播放音频的时候报错The element has no supported sources?

在vue项目给audio绑定个ref属性&#xff1a;在需要动态绑定的方法里用$refs动态设置src 问题&#xff1a; 这样添加时&#xff0c;音频则无法播放 <template> <div class"container"><audio:src"audioURL"id"audio"ref"…

vue3.0 组件之间传值

父组件 ——> 子组件 &#xff1a;props setup(props,ctx) 子组件 ——> 父组件 &#xff1a;emit setup(props,{emit}){ emit(sendMsg,state.result) } 或 setup(props,ctx) { ctx.emit(sendMsg,state.result) } 在vue3中使用 emit可能会报错警告&#xf…

归并排序——非递归的方法

// test20.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iostream> #include<vector> #include<string> #include<queue> #include<stack> #include<cstring> #include<string.h> #include<de…

vue 踩坑--赋值后原对象的值改变

//vue定义变量data() {return {     //初始表格数组对象tableData:[],     //被赋值对象newlData:[] //被赋值对象 } } 问题原因&#xff1a; 简单的赋值没有创建一个新的对象内存地址&#xff0c;只是把newlData的内存地址指向了tableData的内存地址&am…