小程序授权登录的体验优化
大多数小程序的登录,都是这样设计的:

进来就提示你需要授权,有部分人可能就会点“拒绝”(拒绝的比例可能超出我们的预估)

然后在后续操作的时候,就进行不下去了。而且小程序会缓存一段时间用户的授权数据,所以又没办法再弹出授权登录的页面,只能删除小程序,重新进来,重新允许授权才行

我觉得,好的体验方式是:在必须需要用户授权登录的页面或操作(比如支付,创建表单),再提醒用户。如果用户还是点“拒绝”,再弹出确认框提示“必须授权登录之后才能操作呢,是否重新授权登录?”

以《微生成》的“我的钱包”页面为例,这个页面必须要用户登录的

//公共的登录方法,只演示逻辑
function login(){
var that= this
var sucess = arguments[0] ? arguments[0] : function(){};//登录成功的回调
var fail = arguments[1] ? arguments[1] : function(){};//登录失败的回调
var title = arguments[2] ? arguments[2] : '授权登录失败,部分功能将不能使用,是否重新登录?';//当用户取消授权登录时,弹出的确认框文案
var user = wx.getStorageSync('user');//登录过后,用户信息会缓存
if(!user){
wx.login({
success: function (res) {
var code = res.code;
wx.getUserInfo({
success: function (res) {
var rawData = encodeURIComponent(res.rawData);
var signature = res.signature || '';
var encryptedData = res.encryptedData;
var iv = res.iv;
that.getLoginApi(code, rawData, signature, encryptedData, iv, function (res) {//调用服务器端登录,获得详细用户资料,比如openid(支付用),保存用户数据到服务器  
wx.setStorageSync("user",res)//本地缓存user数据   下次打开不需要登录
var app = getApp()
app.globalData.user = res//在当前的app对象中缓存user数据
sucess(res)
})
},
fail: function (res) {//用户点了“拒绝”
wx.showModal({
title: '提示',
content: title,
showCancel: true,
cancelText: "否",
confirmText: "是",
success: function (res) {
if (res.confirm) {
if (wx.openSetting) {// 当前微信的版本 ,是否支持openSetting
wx.openSetting({
success: (res) => {
if (res.authSetting["scope.userInfo"]) {//如果用户重新同意了授权登录
wx.getUserInfo({//跟上面的wx.getUserInfo  sucess处理逻辑一样
success: function (res) {
var rawData = encodeURIComponent(res.rawData);
var signature = res.signature || '';
var encryptedData = res.encryptedData;
var iv = res.iv;
that.getLoginApi(code, rawData, signature, encryptedData, iv, function (res) {
wx.setStorageSync("user",res)
var app = getApp()
app.globalData.user = res
sucess(res)
})
}
})
} else {//用户还是拒绝
fail()
}
},
fail: function () {//调用失败,授权登录不成功
fail()
}
})
} else {
fail()
}
}
}
})
}
})
},
fail: function (res) {
fail()
}
})
}else{//如果缓存中已经存在user  那就是已经登录过
var app = getApp()
app.globalData.user = user
sucess(user)
}
}

这样的话,当用户进入“我的钱包”页面,就是这样了(如果用户已经登录过,就会直接显示内容):

1.png

2.png

3.png

转载于:https://www.cnblogs.com/wwlww/p/8410155.html

小程序授权登录的体验优化相关推荐

  1. 提高微信小程序的应用速度的常见方式有哪些? 小程序怎么实现下拉刷新? 简述微信小程序原理? 小程序的发布流程(开发流程)分析下微信小程序的优劣势?小程序授权登录流程? 小程序支付如何实现

    小程序部分常见面试题 提高微信小程序的应用速度的常见方式有哪些? 提高页面加载速度 用户行为预测 减少默认data的大小 组件化方案 分包预下载 小程序与原生App相比优缺点? 优点: 基于微信平台开 ...

  2. 微信小程序授权登录,跳转页面后在跳回首页不用再次登录

    小程序授权登录要使用wx.getUserProfile,获得用户投头像后,做一些页面跳转功能,但是如果需要再次跳转首页的话,小程序就会有回到登录前的状态,这样体验感会很差.要想不用再次登录,也不难,只 ...

  3. 新版微信小程序授权登录流程及问题汇总(getUserProfile)

    问题来源:前不久去面试的时候有面试官问我你有自己的博客啥的吗?只能很尴尬的说没有.其实一直想有一个属于自己的博客啥的去记录自己在开发过程中遇到的问题,正好现在微信小程序比较流行,就花了两天自己搞了一个 ...

  4. 微信小程序授权登录 组件的封装

    微信小程序授权登录 组件的封装 新建components文件 写wxml文件 wxss部分 js部分 json引用 页面使用 页面js 授权登录 流程如下: 因为多个页面功能需要登录状态 所以做了个组 ...

  5. SpringBoot微信小程序授权登录

    SpringBoot微信小程序授权登录 一.appId 1.1.自己是管理者:微信公众平台,申请或登录自己的微信小程序,在开发者管理中即可看到 2.2.自己是开发者:让管理员将自己加入到小程序开发者管 ...

  6. uniapp微信小程序授权登录和获取微信绑定的手机号码

    uniapp微信小程序授权登录和获取微信绑定的手机号码 弹出授权的弹框 <view class="weixinOk" @tap="getUserProfile&qu ...

  7. 基于Thinkphp5+EasyWeChat+fastadmin微信小程序授权登录获取手机号微信公众号网页---联合授权登录

    战前准备 1.使用 composer 安装 EasyWeChat $ composer require overtrue/wechat:~4.0 -vvv 或者在composer.json文件renq ...

  8. 微信小程序授权登录取消授权重新授权处理方法 附可用代码

    微信小程序授权登录基本是小程序的标配了,但是官方的demo,取消授权后,就不能再重新点击登录,除非重新加载小程序才可以,这下怎么办? 我们可以先在首页引导用户点击,然后跳转到一个新的页面,在新的页面进 ...

  9. 简单实现小程序授权登录功能

    本人给大家带来了关于微信小程序的相关知识,其中主要介绍了怎么实现小程序授权登录功能的相关内容,下面一起来看一下,希望对大家有帮助. 在我们平时工作.学习.生活中,微信小程序已成为我们密不可分的一部分, ...

最新文章

  1. 动态修改迅雷的下载地址
  2. python可分组字典
  3. sdwan解决方案的分类—Vecloud
  4. list集合去重复元素
  5. Qt 从C ++定义QML类型(一)
  6. JAVA中的反射机制和模块化
  7. 理想汽车CEO李想晒11月理想ONE成绩
  8. 华硕ROG5电竞手机跑分数据曝光:骁龙888+16G超大运存
  9. 使用EntityFramework Core和Enums作为字符串的ASP.NET Core Razor页面——第二部分
  10. 密码学研究-加密解密
  11. Linux命令整理-Ubuntu
  12. Spark的简介和在大数据领域的地位
  13. java封装与调用方法_java方法和封装
  14. 详细“企业库”编写流程
  15. uchome 数据字典详解
  16. Python数据分析(二) —— 进阶绘制双折线图
  17. Java 6-3 锥体体积计算
  18. e生保等待期什么意思_平安e生保等待期是90天 保险90天等待期是什么
  19. 史上最全的前端资源汇总(上)
  20. 代码质量好坏如何评判

热门文章

  1. 电脑版微信怎么看朋友圈_电脑上也可以看朋友圈,99%的人都不知道!
  2. mysql 局域网_MySQL 局域网授权问题
  3. oracle数组转换字符串函数,Oracle 字符串转数组的函数
  4. matlab求方程实根,简单迭代法求方程根的MATLAB程序
  5. 人脸对齐(二十)--PRN
  6. 国外免费服务器 win系统,FreeSSHd一个免费的SSH服务器的Windows | MOS86
  7. Java Collection框架入门
  8. com.alibaba.fastjson.JSONArray cannot be cast to com.alibaba.fastjson.JSONObject
  9. scala练习100道解析
  10. 一文讲清模拟信号、自然信号、数字信号、模拟输入输出