小程序的API接口文档写的很清晰,现在理一遍思路。

前端通过wx.login()获取code ,把code发给后台,后台返回openid,再获取用户的授权信息(这里先判断是否授权,授权过的就直接进入小程序,没授权过的,跳转到授权页进行)。

在app.js 页
onLaunch: function () {
var _this = this;
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
// 登陆成功
if (res.code) {
// 发起网络请求,获取微信信息
console.log(res.code); wx.request({
method: 'POST',
url: getOpenIdUrl,
data: {
code: res.code
},
success: function(res) {
console.log(res);
var openid = res.data.data.openid;
// 获取微信信息
_this.userInfo(openid);
}
})
}
}
})
userInfo:function(openid){
wx.getSetting({ //判断是否授权
if(!res.authSetting['scope.userInfo']){//如果没有授权
wx.redirectTo({
url:'/pages/login/login?openid='+openid,
})
}else{
console.log('已经授权')
}
}) } //在login页xml设置button
<button class='loginbutton'open-type="getUserInfo" bindgetuserinfo="userInfoHandler">请授权</button>
 
  //js页
userInfoHandler:function(res){

      var userMes = res.detail;
      _this.setData({
           userMes:userMes
       })
 
      if (res.detail.errMsg=='getUserInfo:ok'){
             var url = '/pages/list/list';
             _this.postAddUser(_this.data.openid, _this.redirectTo, url);
      }else{
            console.log('授权失败')
        }
},
redirectTo:function(url){
wx.redirectionTo({
url:url
})
}
postAddUser:function(openid,callback,callbackArg){
var _this=this;
         wx.request({
         method: 'POST',
         url: login,
         data: {
            'rawData': _this.data.userMes.rawData,
            'signature': _this.data.userMes.signature,
            'encryptedData': _this.data.userMes.encryptedData,
            'iv': _this.data.userMes.iv,
            'openid': _this.data.openid
            },
         success: function (res) {
              _this.saveCache('weInfo', res.data.data);
              callback(callbackArg);
            }
     }
//保存缓存
saveCache:function(key,value){
wx.setStorage({
key:key,
data:vulue
})
}

关于微信小程序登录授权的更多相关文章

  1. uni-app微信小程序登录授权

    微信小程序授权是非常简单和常用的功能,但为了方便,还是在此记录一下要点: 首先是需要用到一个授权按钮来触发获取用户信息授权: 关键在于 open-type 为 getUserInfo , 然后有个@g ...

  2. 微信小程序登录授权并获取手机号

    一.请求发送 携带 code 到后台换取 openid var that = this; wx.login({ success(res) { console.log(res); var code = ...

  3. spring mvc+redis实现微信小程序登录

    本文将详细的介绍微信小程序的登录流程以及在ssm框架下如何实现小程序用户登录 登录流程概要 主要的登录流程可以参考官方提供的一张流程图: 1.微信前台页面: 在微信版本更新之后,提高了安全机制,我们需 ...

  4. 基于Shiro,JWT实现微信小程序登录完整例子

    小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...

  5. 微信小程序登录JAVA后台

    代码地址如下:http://www.demodashi.com/demo/12736.html 登录流程时序登录流程时序 具体的登录说明查看 小程序官方API 项目的结构图: springboot项目 ...

  6. 微信小程序登录对接Django后端实现JWT方式验证登录

    先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3. ...

  7. 全栈项目|小书架|微信小程序-登录及token鉴权

    小程序登录 之前也写过微信小程序登录的相关文章: 微信小程序~新版授权用户登录例子 微信小程序-携带Token无感知登录的网络请求方案 微信小程序开通云开发并利用云函数获取Openid 也可以通过官方 ...

  8. Flask与微信小程序登录(后端)

    开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + flask + 微信小程序实现用户快速注册登录方案(本文主要进行后 ...

  9. Spring Security 整合 微信小程序登录的思路探讨

    1. 前言 原本打算把Spring Security中OAuth 2.0的机制讲完后,用小程序登录来实战一下,发现小程序登录流程和Spring Security中OAuth 2.0登录的流程有点不一样 ...

随机推荐

  1. SQLServer存储引擎——02.内存

    SQLServer存储引擎之内存篇: (1)SQL SERVER 内存结构        SQL SERVER 内存结构简图 SQL SERVER 内存空间主要可分为两部分: (1.1)可执行代码(E ...

  2. TensorFlow创建变量

    1 使用tf.Variable函数创建变量 tf.Variable(initial_value=None,trainable=True,collections=None,validate_shape= ...

  3. CENTOS 7 升级安装 Python 3.5

    写在前面的话 本文采取源码的方式安装 Python 3.5.2,如果是其它版本会有或多或少的差异,且写这篇的时候官网最新的是 Python 3.7,个人使用 3.5 就足够了,没必要更新到最新,否则出 ...

  4. Binder学习笔记(八)—— 客户端如何组织Test()请求 ?

    还从客户端代码看起TestClient.cpp:14 int main() { sp < IServiceManager > sm = defaultServiceManager(); / ...

  5. ubuntu - 14.10,安装uget和aria2(下载工具)

    Windows下的下载工具--迅雷,之所以下载速度快,乃是它能搜索资源.为己所用,而不是仅仅从原始地址这单一资源处下载. Ubuntu下也有类似的工具,那就是aira2. aira2是一个命令行下载工 ...

  6. webpack4 入门(二)

    一.管理输出 1.多入口配置 entry: { index1: './src/index.js', index2: './src/index2.js' }, output: { filename: ' ...

  7. jQuery回车触发事件

    举例: 需求:要求回车触发下一步 Html部分 <div style="margin-top: 25px;"> <a href="#" cla ...

  8. PerformCallback

    实现客户端,服务端异步通信的. 从客户端到服务端的通信:PerformCallback().PerformCallback就是从客户端到服务端的桥梁,它是单向的只能从客户端发起到服务端.在Perfor ...

  9. Redis及虚拟机windows两种环境安装配置

    ---恢复内容开始--- Redis  /rae  dis/是一个开源的Key-Value数据库.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链 ...

  10. pf4j实例 插件框架

    实现整个过程需要三个部分,第一就是根接口,第二是插件,第三是应用程序.这是3个java项目. 首先要下载jar包,百度搜索maven repository,然后搜索pf4j,如下图,下载第一个的相应版 ...