微信公众号开发获取授权code回调多次问题的终极解决方案

微信公众号开发-网页授权——配置测试账号 思路分析: 1.创建测试账号并且配置测试账号的授权回调域名。 2.由前端发起授权请求,微信收到请求后(若是首次打开,并且未关注公众号,微信会弹出授权页,提示用户授权)将重定向到请求url中配置的redirect_uri地址,并返回code和state参数。 3.将code传入后台服务端,获取网页授权access_token,再通过网页授权access_token获取用户基本信息及openid... 阅读详情

问题描述

在公众号开发中一定要获取用户的openid信息,按照微信的文档来就好了。测试没有问题上线后,部分安卓手机会出现无法打开网页的现象。

问题跟踪

通过系统日志发现诡异现象,redirect_uri会被回调n次,而且每次的code相同,由于code只能被使用一次,导致后面处理异常。

问题处理

加connect_redirect=1参数

根据网上的说法加这个参数就能解决。
如:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=URI&response_type=code&scope=snsapi_userinfo&state=1&connect_redirect=1#wechat_redirect
但是在我这个项目中并没有用。

缓存code和处理结果

这个思路靠谱,不论请求几次,我做个锁,只处理第一次,后续从缓存中直接取结果。
可是依然无法解决项目中的问题。

redirect_uri禁止重定向

网上有人说重定向时302改为301可以解决,在我的项目中也没有起到作用。
最后在这个思路的基础上,我们不去重定向了,而想办法直接响应200,世界终于平静了。

大致流程如下:
1.在页面A.html中需要获取openid,如果读取storage成功即完成,否则继续下一步;
2.在页面A.html中保存Storage: redirectUrl=A.html;
3.在页面A.html中向微信发起授权申请;
4.微信回调服务器,响应页面为redirect.html;
5.在redirect.html中接收openid并保存进storage;
6.在redirect.html读取redirectUrl并跳转;
7.在页面A.html中可以直接从storage读到第5步获取的openid,完成。

最终问题的定位是:部分手机的浏览器只能正常处理200的响应,也许是处于安全方面的考虑。

微信公众号授权获取code无限循环跳转页面,清理地址栏的code,重定向处理 微信公众号授权获取code无限循环跳转页面,清理地址栏的code,重定向处理 阅读详情

相关推荐

亲历H5移动端游戏微信支付接入及那些坑(一)——支付方式与坑

最近项目进入中后期,开始接入支付。要求是使用微信支付,呵呵,好笑的是不知老板从哪里听来的,居然和我说只要是熟手,接个微信支付两小时搞定,我只能再次呵呵。先不说支付处理逻辑,而且公司本来也没现成的接入模块,再加上我对国内SDK的文档水平,我只能说,前途必定是暗坑无数,还两小时,除非是有现成接入模块,外加不用写支付后处理逻辑,配配参数了事的那种,否则哪有那么简单。(如有大神两小时内从无到有做完整个接入,

狼行天下 4万+

微信网页授权接口多次回调问题&connect_redirect=1

结论: 无论加不加&connect_redirect=1参数,微信都会多次回调开发者服务器,造成oauth_code已使用的异常! 但是微信再次调开发者服务器是有前提条件的: 开发者服务器没有在第一次回调中做任何响应,比如业务逻辑中连接数据库超时的这段时间,此时开发者服务器相当于等待,还没有报错,这时微信服务器没有收到任何回应会再次回调. 微信服务器没有收到任何回应10秒之后才会再...

一只蜗牛的博客 7486

微信公众号网页授权--前端获取code及用户信息(vue)

前段时间开发微信公众号网页授权,虽然网上已经有很多关于这方面的博客或者教程,但是第一次开发还是遇到挺多坑的,以下分享一下我的踩坑填坑之路。 一、测试号相关配置 首先在你公司申请的测试号上配置好相关信息,这里直接上图吧: URL与Token都是要后台配置好的,直接叫后台给过来就好啦,域名一定要和URL的域名保持一致。 然后,在体验接口权限表里面找到网页帐号--网页授权获取用户基本信息,点...

hxf6060的博客 3万+

微信公众号授权登录重复登录不跳转

今天开发公众号遇到一个问题,在微信授权登录的时候一直重复回调,在网上找到几个解决方案, 方法一: 使用缓冲把第一次获取的code存入缓冲,然后再请请求的时候判断是否存在这个值 方法二: 在请求链接中加上一个参数:connect_redirect=1 微信请求code的接口:https://open.weixin.qq.com/connect/oauth2/authorize?appid...

这不是我的博客 6659

uniapp开发h5应用进行微信网页授权登录获取code失败

最近正在做企业微信内的h5应用,有微信授权登录这么个需求。微信授权登录并不复杂,整个流程就是按照文档上描述的:在入口页构造网页授权链接,跳转到该链接,微信会重定向到入口页并将code拼在url上,前端将code给到后端,后端调用微信提供的服务端api即可完成登录。 // 构造如下链接来获取code参数 https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect\_uri=REDIRECT\_URI&re

qq_30040899的博客 7674

uniapp中h5网页微信公众号授权

uniapp微信网页授权uniapp中h5网页微信公众号授权主要代码获取code返回的code截取代码 uniapp中h5网页微信公众号授权 微信官方文档–>网页授权 uniapp中h5网页微信公众号授权步骤: 1.采用用户授权获取code 2.把code传给后端后端获取openid 以及是否关注公众号判断 3.没有关注跳转至关注公众号页面 主要代码 //判断用户是否是微信环境 if (isWechat()) { let code = getUrlParam("code"); //是否存在co

LTNS_LI的博客 6610

微信公众平台网页授权两次重定向跳转问题

在做微信公众平台网页授权时,发现每次请求授权链接https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=xxx&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect时都会重定向链接redir...

流子的专栏 5万+

PHP tp3.2微信公众号静默授权获取code 获取openid

一.调用静默授权接口基于thinkphp3.2的1.获取code并回调到另外一个方法去得到openid参数说明:redirect_uri 回调地址scope=snsapi_base snsapi_base 发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的scope=snsapi_userinfo以snsapi_userinfo为scope发起的网页授权,...

尼古拉斯鹏 5524

微信公众号授权登录网页获取code

配置回调函数 我们在微信客户端访问第三方网页(即我们自己的网页)的时候,我们可以通过微信网页授权机制,我们不仅要有前面获取到的appid和appsecret还需要有当用户授权之后,回调的域名设置,即用户授权后,页面会跳转到哪里。具体的配置如下: 请求授权页面的构造方式: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&a

weixin_43110609的博客 5588

解决微信H5静默授权获取code以及H5页面历史回退死循环问题

摘要 近期在开发H5页面相关需求,需求中有个微信静默授权登录的功能,之前没有接触过这个功能,经过调研官方文档,开发出了初级方案;初级方案可以解决获取code,但是页面返回上一个页面时,需要连续返回两次才可以回到上一个页面。经过获取流程分析,解决了返回循环的bug。 初级方案原理 当时调研完官方文档后,发现授权流程是重定向的方式,就傻白甜的直接在需要微信code的页面直接获取code并跳转回当前页,这样就造成了页面获取死循环的bug。为了解决获取code死循环的bug,在获取code时,建立一个中.

高先生的猫 7502

微信网页授权,获取微信code,获取access tocken 获取用户信息

微信网页授权,获取微信code,获取access tocken 获取用户信息

jdtugfcg的博客 2386

微信公众平台网页登录授权多次重定向跳转,导致code使用多次问题

背景:微信网站开发   昨天我负责的一个项目忽然出现了一个十分诡异的bug,进行微信授权登录的时候请求code的时候安卓手机会多次重定向调转我的接口接收code的接口(redirect_uri 微信请求调转接收code的的接口,加了Url.encode()),也就是我这边默认请求了多次这个接口,然而苹果手机没有问题,于是我写了日志看了下没错,有时候会请求两次或者更多次这个重定向的接口地...

dfj66154的博客 4347

Java微信公众号开发微信网页授权之前端传递code方式获取用户信息

本片博客讲解的网页授权分为两步,前端先传递backUrl(回调地址)到后台网页授权接口,该接口拿到回调地址后组装授权连接,重定向到前端页面,前端页面截取Code,传入后端获取用户信息方法,获取用户信息的方法拿到code后,完成授权流程,获取用户信息完成; 一、网页授权获取用户基本信息 如果用户在微信中(Web微信除外)访问公众号的第三方网页,公众号开发者可以通过此接口获取当前用户基本信息(...

Thinkingcao的专栏 9848

微信公众号网页授权思路解析及具体代码

微信公众号授权登录、获取用户信息(openid) 实现方式也是两种: 1.静默授权登录 授权登录以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)特点:用户无感知; 2.非静默授权登录 非静默授权以snsapi_userinfo为scope发起的网页授权,是用来获取用户的...

yang_zeng的博客 3万+

slam_toolbox 简介和使用

专为移动机器人在未知环境中实时构建地图和定位设计。它适用于2D和3D环境,支持多种机器人平台和传感器配置。

weixin_74808846的博客 3307

比特大陆校招笔试

我当时做的时候没有概念(上边倒计时我一直以为是一个模块的),所以第一个模块写的太长了导致最后才留15分钟快速选的(一共18道题),有一题最后没有选上,两题没有认真看题目瞎选的,求求求过过过!选择题:主要考高中物理题、数学题(念过高中的一定会,但是需要时间算,需要留25分钟左右的时间做)第一道就是写个人的内容,什么最近读过的书,最近的感受等等;分为两个模块,考试内容超级无敌简单,但是注意时间掌握。注意这里别花太长的时间,不然后边来不及。第二道逻辑分析题,需要你写解答。

Domainwa的博客 669

微信公众号 :h5获取code,授权等问题

前端引入微信的sdk,按着文档获取code,最后获取openID、AppID。答题思路是这样,但是有时候需求不是这么搞的,尤其是获取code,微信URL会重定向,体验非常不好。 如果页面中,有不同的地方,调用多次微信方法,难道每次都需要重新获取code吗? 当然不行!!强迫症的我,表示接受不了!! 一、梳理分析 1、调用微信方法,需要在当前页面先执行wx.config 2、调用AppID、openID等等,需要先获取code 3、获取code,需要微信重定向(就是这里接受不了) 那么证明是否可以先获取cod

拿回忆下酒 6339

RAD Studio 10.4.2 安装避坑指南:从镜像加载到首次运行的全流程解析

本文提供了一份详尽的RAD Studio 10.4.2安装避坑指南,涵盖从镜像验证、文件提取到安装激活的全流程。重点解析了安装教程中常见的权限、路径及激活顺序等关键“坑点”,旨在帮助开发者,尤其是Delphi和C++Builder新手,一次性顺利完成安装与配置,确保开发环境稳定运行。

weixin_29224309的博客 328

微信公众号开发之授权登录(前端vue篇)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

I_am_ken的博客 1万+

深入解析UVM寄存器模型:reg2bus与bus2reg的隐式调用机制

本文深入解析了UVM寄存器模型中reg2bus与bus2reg函数的隐式调用机制。通过追踪一次寄存器访问的完整旅程,揭示了这两个关键函数是如何在uvm_reg_map和uvm_reg_predictor中被框架自动调用的,从而在抽象的寄存器操作与具体总线事务之间完成转换,并实现镜像值的自动更新。掌握此机制是高效调试和灵活应用UVM寄存器模型的基础。

weixin_29211309的博客 441

安装和使用pandoc

支持 Markdown、DOCX、LaTeX、HTML、PDF、EPUB 等 60+ 种格式 的互相转换

PLANTTHESON的博客 6832

微信公众号内嵌H5网页授权步骤

参考地址: 1、https://asyncoder.com/2018/09/21/在微信H5网页中获取用户基本信息/ 2、https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 主要注意点就是回调地址: 我是用vue框架开发的,所以单独做了个页面去授权回调: redirectToAuthPage(){ con...

baidu_41601299的博客 1万+

科研——ICONIP论文修改和提交

ICONIP说明文档

Blackoutdragon的博客 6647

uniapp企业微信第三方网页授权登录获取code

用法同微信公众号网页一样,直接看文档 构造网页授权链接 - 接口文档 - 企业微信开发者中心 关于调试:没有开发工具,直接下载应用,在应用内打开调试的 客户端网页调试工具 - 接口文档 - 企业微信开发者中心 建议:因为只能线上测试 ,建议多打印方便找问题,不要怕麻烦,否则发布一版改一点更麻烦 注意: 1. 回调地址404,查询其他链接是否带#,回调redirect_uri要一致 2. 其他404:uniapp打包H5空白页面或者刷新404问题_lianzha...

qq_39585172的博客 1万+

基于YOLOv8的违规抽烟/打电话检测系统:从数据集构建到部署实战

模型优点缺点精度高速度慢(5 FPS)SSD速度快小目标检测差YOLOv5平衡性好官方支持停止YOLOv8最新、最快、最准需要PyTorch环境YOLOv8相比前代:骨干网络升级(C2f模块)无锚框检测(Anchor-Free)动态任务对齐分配(TaskAlignedAssigner)支持分类/检测/分割/姿态估计。

YOLO 98

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: SQLServer数据库按年度归档
下一篇: SQLServer性能监控及调优
bd_cool
博客等级 码龄20年 1粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值