官方文档小程序登录流程的介绍

api-login.jpg

即先发起wx.login请求,得到code后经第三方服务器想微信服务器发送请求获取openid,assessToken等敏感信息,这里我们需要以assessToken作为登录状态保持的依据。

基于token的登录状态情况分类

1.首次登录小程序,本地存储中还不存在token,即需要发起登录请求得到token,并存到本地存储

2.小程序本地存储中已存在token,但是已过期,即需要再次发起登录请求以获得token,并覆盖掉本地存储中原先的token

3.小程序本地存储中存在token且有效,即保持登录状态

代码实现

//引入插件,使微信api支持promise

import wxp from 'minapp-api-promise'

import Api from './index'

async function login() {

let code;

try {

//微信登录获取token

let res = await wxp.login()

code = res.code;

} catch (err) {

console.log('login fail')

}

console.log('login code', code)

// wx.setStorageSync('code', code);

try{

console.log('get token',code)

//将code传给后端以获得token

let res = await Api.loginGetToken(code);

let token = res.result.accessToken;

//将token存到本地存储中

wx.setStorageSync('token',token);

//将当前时间存到本地存储

let createTime = new Date();

wx.setStorageSync('createTime',createTime);

//如有需要,将openid存到本地存储

let openId = res.result.openId;

wx.setStorageSync('openId',openId)

}catch(err){

console.log('getToken fail')

}

}

//检查登录状态

async function checkLogin() {

console.log('checkLogin')

let time = new Date();

let createTime = wx.getStorageSync('createTime');

let token = wx.getStorageSync('token');

if (!token) {

//不存在token,调用登录

console.log('no token')

await login()

} else if (time - createTime > 6 * 24 * 3600 * 1000) {

//token过期(假设是6天),调用登录

console.log('token expired')

await login()

}else {

//token有效,不做操作

console.log('already Login')

}

}

export default {

login,

checkLogin

}

手机token登入软件_小程序中基于token的登录流程相关推荐

  1. 手机token登入软件_app开发调试工具_app开发token使用

    APP制作软件有哪些? 国外的制作工具 Appmakr 国内制作App的工具网站    AppCan 可以再搜搜里面去问下 网上都有,自己看 软件制作APP?什么意思?提的有点不清不楚的.难道是说可以 ...

  2. 小程序怎么处理轮训ajax,微信小程序中使用Promise进行异步流程处理的实例详解...

    微信小程序中使用Promise进行异步流程处理的实例详解 我们知道,JavaScript是单进程执行的,同步操作会对程序的执行进行阻塞处理.比如在浏览器页面程序中,如果一段同步的代码需要执行很长时间( ...

  3. js中怎么获取某个属性的值_小程序中 setData 详解

    前言 在小程序中各个页面之间是相互独立的,一个页面分为渲染层(视图层 webview),逻辑层(JavaScript),系统层(底层),在架构上,WebView和 JavascriptCore 都是独 ...

  4. 小程序获取城市行政区号_小程序中通过经纬度如何获取所在省市区名字(腾讯地图JavaScript SDK)...

    在小程序中通过经纬度来获取所在省市区名字,这个功能还是挺有意思的,小程序中竟然不直接返回所在省市区,只提供经纬度,还需要腾讯地图来获取,还是有点小坑的,不注意的话很容易出问题.废话不多说,请看下文. ...

  5. 如何实现消息功能_小程序中如何实现即时通信聊天功能

    微信小程序是现在应用比较广的流量平台之一,当流量越来越多时,就需要在小程序中接入即时通信聊天功能来实现更好的流量变现转化,那么小程序中如何接入实现即时通信聊天功能呢? 什么是即时通信聊天功能即时通信聊 ...

  6. android studio运行手机时出错怎么解决_小程序 android ios h5解决方案

    你现在开发android,ios,小程序用什么工具,怎么开发的?还在单个端的开发吗?今天我们主要讨论的是一次开发多端使用的技术,也是这两年比较流行的开发方向.现在的终端太多了,app两个端androi ...

  7. 计算两个经纬度之间的距离软件_小程序使用腾讯位置服务计算两地之间的距离(有源码)...

    背景: 在最近的小程序开发中,需要计算当前位置到目标位置之间的距离.背靠"腾讯爸爸",没有理由不使用腾讯的位置服务啊!趁着周末把使用方式整理一下,还写了一个demo,和大家分享一下 ...

  8. java登入ajxs_微信小程序之获取并解密用户数据(获取openid,nickName等)

    本文主要总结微信小程序通过后台请求访问微信用户信息 创建一个微信小程序工程(自行百度) 微信小程序index.js代码 //index.js //获取应用实例 const app = getApp() ...

  9. 微信小程序中的授权、登录注册token和code

    文章目录 一.实现思路 二.实现登录的代码 1.app.js 2.用户点击button按钮 一.实现思路 刚开始进入小程序时,先判断是否授权. 如果没有授权,显示授权button按钮,让用户实现点击的 ...

最新文章

  1. python手记(45)
  2. Linux 查看并删除.svn目录
  3. 什么 Leader 值得追随?
  4. iOS KVO crash 自修复技术实现与原理解析
  5. 机器学习实战(MachineLearinginAction) 第二章 k-近邻算法
  6. 课程设计—通讯录管理系统
  7. PDMS二次开发(二十)——关于1.0.2.0版本升级内容的说明
  8. WPF控件模板和数据模板的区别
  9. CTO说出了我的成长慢的原因,价值10万:“在VUCA时代,必须掌握的12种永久技能。”...
  10. 解释部署大数据解决方案应遵循的步骤
  11. COCOS-BCX|区块链项目介绍
  12. OpenCV批量处理图片
  13. tooth的用法_tooth的复数形式
  14. Transformer课程 第8课NER案例代码笔记-部署简介
  15. 虚拟现实在多领域的解决方案
  16. RegAsm安装卸载办法
  17. EBC动作片 记录EBC 的 景 和 人
  18. 嵌入式linux使用A7680C 4G 网卡
  19. 520送对象什么礼物最好?精选4款好用的电容笔
  20. MacFamilyTree 8.3.6 Mac 破解版 Mac上最强大的家谱制作软件

热门文章

  1. THREEJS辉光与景深特效
  2. VC写的双人版俄罗斯方块
  3. 基于Python的模拟人脑神经元进行学习
  4. 深度CTR之AFM:基于Attention网络的FM模型
  5. 谷歌为iPhone推新版本语音电话软件 北京网游分级制度今年启动(每日关注2010.1.27)
  6. 你不得不知道的上架app
  7. 517编程3380造素数
  8. html5 show 案例
  9. 网站关键词SEO排名,SEO长尾关键词排名工具
  10. LDA + SVM 文本分类