一、情景

在微信浏览器中,需要使用用户微信的code数据,因此采用了"location.href"获取微信授权信息的方式来实现授权登录,并且在重定向页面中获取code,完成操作后需要返回上一页,但是这时候发现采用uni.navigateBack()或者$Router.back()只能回到微信授权的那一页,结果又一次重定向回现在的页面了。

/*** H5端微信授权登录* getApp().globalData.AppId: 配置的appid* redirect_uri: 当前页面或者你想要定向到的地址* scope: snsapi_base:静默登录 / snsapi_userinfo:弹出框登录*/
// #ifdef H5
let tar_url = location.href;
tar_url += location.href.indexOf('?') > -1 ? '&' : '?';
tar_url += 'ori_url=' + location.href;
let uricode = encodeURIComponent(tar_url);
window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+ getApp().globalData.AppId + '&redirect_uri=' + uricode+ '&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect';
// #endif

二、定位问题

通过打印history和getCurrentPages()比较后才发现,重定向打开页面的页面栈只有1级,因此在uni.navigateBack()中delta不论设置是几层,它就是跳不出去。

三、解决方案

1、在事件中返回(如点击确认按钮等):window.history.go(-2);   // -2的层级自己看情况设置

2、监听浏览器左上角的后退按钮:

/*** from(触发返回行为的来源):*    'backbutton': 左上角导航栏按钮及安卓返回键;*    'navigateBack': uni.navigateBack()方法;*     支付宝小程序端不支持返回此字段。*/
onBackPress(options){// console.log(options.from)if('触发条件'){window.history.go(-2);return true;}else{return false;}
}

uni-app:处理微信浏览器中授权微信登录后,无法正常回退问题相关推荐

  1. uniapp微信浏览器H5授权微信登录

    1.准备一个触发微信登录的按钮 <button class="wechat-logo" @click="getWeChatCode">微信授权登录& ...

  2. 微信浏览器中的微信支付,JSAPI支付,开发流程、常见问题

    微信支付有两种使用场景,一种是可以在微信之外的浏览器(如UC浏览器.手机自带浏览器等)中使用,在微信外部唤醒微信进行支付:还有一种是在微信自带内置浏览器中使用,比如微信公众号里边的支付.给客户在微信上 ...

  3. html2canvas 在ios 13.4.x 、 13.5.x 微信浏览器中失效无反应

    如题:html2canvas 在ios 13.4.x . 13.5.x 微信浏览器中失效无反应 解决方法: html2canvas 回退到rc.4版本后可以了. 参考 微信开放社区

  4. php 公众号内h5支付宝支付宝支付宝支付宝支付,微信浏览器中支付宝wap支付和微信JSAPI公众号支付...

    手机浏览器只有支付宝wap支付,微信浏览器中出现支付宝wap支付和微信JSAPI公众号支付,其中支付宝wap在线支付没有在新窗口打开(兼容大部分手机),Thinkphp3.2公众号支付 下载资源 下载 ...

  5. 解决安卓微信浏览器中location.reload 或者 location.href失效的问题

    解决安卓微信浏览器中location.reload 或者 location.href失效的问题 参考文章: (1)解决安卓微信浏览器中location.reload 或者 location.href失 ...

  6. js判断是否在微信浏览器中打开

    js判断是否在微信浏览器中打开 function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroM ...

  7. 在微信浏览器中 location.reload() 不刷新解决方案(直接调用方法)

    1.问题 在微信浏览器中,需要时刷新当前页面. 正常情况下我们直接使用 location.reload 方法来刷新. 2.解决方法 function realod(){var {search,href ...

  8. 关于安卓手机在微信浏览器中无法调起相机的原因

    最近功在做公司的一个项目,遇到安卓手机在微信浏览器中更换头像无法调起相机的问题,特来此记录一下. 1.微信没有相机权限,开启就行了. 2.〈input type="file" ac ...

  9. Js判断是否在微信浏览器中打开和微信版本号

    一.判断微信版本号 var wechatInfo = navigator.userAgent.match(/MicroMessenger\\/([\\d\\.]+)/i) ; if( !wechatI ...

最新文章

  1. 为什么技术进步让我们越来越焦虑不安?
  2. 看 nova-scheduler 如何选择计算节点 - 每天5分钟玩转 OpenStack(27)
  3. python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析
  4. Swift 3 新特性
  5. (转载)机器学习知识点(二十九)LDA入门级学习笔记
  6. 环球网校签约神策数据,数据赋能教育行业创新升级
  7. Eclipse修改web项目的jdk编译版本
  8. CSS+HTML+JQuery简单菜单
  9. 今天学习Flex3.2嵌入图片,值得说道的是如何嵌入scale-9 缩放的图像
  10. 无标题栏窗口的实现拖动,和边的拉伸功能
  11. 程序员为什么老得快_这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作!...
  12. ASP.net 省市级联(用户控件)适用用framework3.5以上版本
  13. kali创建文件_kali 创建快捷方式的方法
  14. 推荐一个业界最小的可自定义算法的加密芯片
  15. 【转】OCaml基础知识
  16. 44 The shopping psychology 购物心理
  17. javascript中encodeURI和decodeURI方法
  18. java画一个八卦_View绘制系列(9)-Canvas八卦图绘制
  19. Python爬虫实例之淘宝商品比价定向爬取!爬虫还是很有意思的!
  20. ios 视频处理详解一(视频导出)

热门文章

  1. PigyChan_LeetCode 1110. 删点成林
  2. PCB layout 电路板 敷铜 铺铜 铺地 问题的讨论
  3. linux下分析cel文件,CEL格式文件 如何打开CEL文件 CEL是什么格式的文件 用什么打开 - The X 在线工具...
  4. html div 禁止点击
  5. “后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?
  6. xmind打不开文件
  7. AiCloud 2.0 AT开发文档【转】
  8. 练习 ~黑马程序员匠心之作-第二阶段实战-P72~P83-通讯录管理系统
  9. 获取表中以某个拼音开头的记录
  10. python的默认编码