java微信授权登录传参给redirect_uri 接口,回到原页面,传递多个参数
本文背景:
调用微信的授权登录的时候,我们第一步是需要获取用户同意授权的code,这里面有一个redirect_uri参数,当用户同意授权之后,就会回调访问这个redirect_uri,通常这redirect_uri可能是一个后台的接口,我们获取用户的信息之后和我们的注册业务进行绑定,那我们在保存完这个用户的个人信息之后,希望跳转回去用户最开始访问页面,那么就需要传递一个returnUrl的参数给我们的回调接口redirect_uri
String url = https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
(上面的参数APPID等,需要根据实际情况进行转码和替换)
实现方式1:
上面的url里面可以带一个参数state,这个参数是会被带回去给我们的redirect_uri的,所以我们把需要传递的参数用state带到回调接口redirect_uri就可以了,
比如我们想要把订单id"123456"带过去,那么上述url改成
String url = https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=123456#wechat_redirect,
如果我们希望多带几个参数呢,可以把参数用json字符串的形式传递
String param = "{\"type\":1,\"wxpOutTradeNo\":"+wxpOutTradeNo +"}";
先对参数进行编码,然后再拼接,这里直接使用了replace的方法,用编码后的值,替换了原来STATE的值
url =url.replace( "STATE", URLEncoder.encode( param, "UTF-8" ) )
然后我们在回调接口这里,先把json字符串,转成object的形式,再来获取就可以了
String state = request.getParameter("state");
JSONObject object = new JSONObject(state);
String wxpOutTradeNo = (String)object.get( "wxpOutTradeNo" ); // 订单号
实现方式2:
假如我们的回调接口 redirect_uri = user/wechatLoginCallBack,
最开始访问的页面是:api/news/newsList,那么我们的returnUrl = api/news/newsList,
首先需要给returnUrl进行编码,String encodedReturnUrl = URLEncoder.encode( returnUrl , "UTF-8" )
然后把它加到redirect_uri 后面,再给redirect_uri 进行编码,(returnUrl在这里相当于进行了二次编码)
String encodedRedirectUri = URLEncoder.encode( redirect_uri + "?returnUrl=" + encodedReturnUrl , "UTF-8" ) ); (?后面只能带一个参数)
最后,把这个编码后的回调接口替换到url里面就可以了 url = requestUrl.replace( "REDIRECT_URI", encodedRedirectUri );
这样就实现了参数传递。
最后的最后,我们在user/wechatLoginCallBack这个回调接口里面可以使用request.getParameter("returnUrl");来获取我们原始访问页链接,处理完各种逻辑之后再返回到这个页面就可以了。而且这个原始访问页returnUrl 还可以携带一个参数,比如api/news/newsList?id=123。
相关问题:
不管是redirect_uri ,还是returnUrl,?后面都只能带一个参数,再多的参数,会被过滤掉,
想要带多个参数,需要用json字符串的的形式
后端跳转到前台页面之后,如果不会刷新页面,需要前端帮忙刷新。
java微信授权登录传参给redirect_uri 接口,回到原页面,传递多个参数的更多相关文章
- 微信小程序 带参调用后台接口 循环渲染页面 wx.request wx:for
test.js 文件里的onLoad function getarticles(p,order,mythis) { wx.request({ url: 'https://ganggouo.cn/ind ...
- 微信授权登录-微信公众号和PC端网站
https://blog.csdn.net/qq_34664239/article/details/79107529 一.微信公众号授权登录——微信公众平台 微信授权登录,并调用后台接口,获取用户信息 ...
- java结合node.js非对称加密,实现密文登录传参——让前后端分离的项目更安全
前言 在参考互联网大厂的登录.订单.提现这类对安全性操作要求较高的场景操作时发现,传输的都是密文.而为了目前项目安全,我自己负责的项目也需要这方面的技术.由于,我当前的项目是使用了前后端分离技术, ...
- 微信公众平台开发——微信授权登录(OAuth2.0)
1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户 ...
- 微信授权登录(OAuth2.0)-- 随记
1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户 ...
- [转] Android:微信授权登录与微信分享全解析
https://wohugb.gitbooks.io/wechat/content/qrconnent/refresh_token.html http://blog.csdn.net/xiong_it ...
- 微信授权登录(PHP)
微信授权登录(PHP) 微信授权 OAuth2.0授权 微信网页授权 主要是在项目中遇到网页授权登录这个需求,就对此做些总结记录. OAuth2.0授权 OAuth是一个开放协议,允许用户让第三方应用 ...
- 【第二十一篇】手C# MVC 微信授权登录 OAuth2.0授权登录
首先一定要熟读,最起码过一遍微信开发者文档 微信开发者文档 文档写的很清楚 授权登录四步走 在正文开始前,我得讲清楚一个事情 敲黑板,划重点:微信一共有两个 access_token 一个是7200就 ...
- wap2app(五)-- 微信授权登录以及踩过的坑
应用场景是:用Hbuilder打包app,在app中点击微信授权登录或者某一操作,调起微信授权登录,用户授权后拿到用户信息. 一.登录插件配置 先配置微信登录参数 appid和appsecret,在m ...
随机推荐
- 20145105 《Java程序设计》第7周学习总结
20145105 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 一.认识时间与日期 (一)时间的度量 格林威治标准时间 世界时 国际原子时 世界协调时 Uni ...
- sbt介绍与构建Scala项目
一.sbt简介 sbt是类似ANT.MAVEN的构建工具,全称为Simple build tool,是Scala事实上的标准构建工具. 主要特性: 原生支持编译Scala代码和与诸多Scala测试框架 ...
- ZooKeeper 增加Observer部署模式提高性能
Observer:在不伤害写性能的情况下扩展ZooKeeper. 虽然通过Client直接连接到ZooKeeper集群的性能已经很好了,可是这样的架构假设要承受超大规模的Client,就必须添加Zoo ...
- HDU 3974 Assign the task(DFS序)题解
题意:给出一棵树,改变树的一个节点的值,那么该节点及所有子节点都变为这个值.给出m个询问. 思路:DFS序,将树改为线性结构,用线段树维护.start[ ]记录每个节点的编号,End[ ]为该节点的最 ...
- HDU 2157(矩阵快速幂)题解
How many ways?? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 【Maven】2.使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
参考文章: http://www.cnblogs.com/luotaoyeah/p/3791966.html --------------------------------------------- ...
- junit中test注解测试使用案列解析二
本文原创,转载请注明出处 在上文中,已经简单的解析了junit中test注解的使用方法,今天在进行test测试时,遇到了一个异常,于是想深 入的研究一下. 还原一下今天的异常代码: @Service ...
- 【TCP/IP详解 卷一:协议】第二十四章 TCP的未来与性能
来到了TCP的最后一个章节,未来与性能.在当时(1991年)的未来,如今已经部分变为现实,部分就只是历史中的实验. 主要内容: 路径MTU的发现与TCP的结合. 长肥管道 和 高速千兆比网络. 窗口扩 ...
- HDU 2546 饭卡(0-1背包)
http://acm.hdu.edu.cn/showproblem.php?pid=2546 题意: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如果购买一个商品之前,卡上的剩余金 ...
- python 生成元组
#create a tuple l = [(,), (,), (,)] print(list(zip(*l)))