微信客户端配置信息存储解决方案
WxMpConfigStorage接口提供了一下参数获取的get-interface:
- 对应的变量在使用时要注意并发处理,这部分后面补充
protected volatile String appId;protected volatile String secret;protected volatile String token;protected volatile String templateId;protected volatile String accessToken;protected volatile String aesKey;protected volatile long expiresTime;protected volatile String oauth2redirectUri;protected volatile String httpProxyHost;protected volatile int httpProxyPort;protected volatile String httpProxyUsername;protected volatile String httpProxyPassword;protected volatile String jsapiTicket;protected volatile long jsapiTicketExpiresTime;protected volatile String sdkTicket;protected volatile long sdkTicketExpiresTime;protected volatile String cardApiTicket;protected volatile long cardApiTicketExpiresTime;
/*** 微信客户端配置存储.**/
public interface WxMpConfigStorage {String getAccessToken();Lock getAccessTokenLock();boolean isAccessTokenExpired();/*** 强制将access token过期掉.*/void expireAccessToken();/*** 应该是线程安全的.** @param accessToken 要更新的WxAccessToken对象*/void updateAccessToken(WxAccessToken accessToken);/*** 应该是线程安全的.** @param accessToken 新的accessToken值* @param expiresInSeconds 过期时间,以秒为单位*/void updateAccessToken(String accessToken, int expiresInSeconds);String getTicket(TicketType type);Lock getTicketLock(TicketType type);boolean isTicketExpired(TicketType type);/*** 强制将ticket过期掉.*/void expireTicket(TicketType type);/*** 更新ticket.* 应该是线程安全的** @param type ticket类型* @param ticket 新的ticket值* @param expiresInSeconds 过期时间,以秒为单位*/void updateTicket(TicketType type, String ticket, int expiresInSeconds);String getAppId();String getSecret();String getToken();String getAesKey();String getTemplateId();long getExpiresTime();String getOauth2redirectUri();String getHttpProxyHost();int getHttpProxyPort();String getHttpProxyUsername();String getHttpProxyPassword();File getTmpDirFile();/*** http client builder.** @return ApacheHttpClientBuilder*/ApacheHttpClientBuilder getApacheHttpClientBuilder();/*** 是否自动刷新token.*/boolean autoRefreshToken();}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在线程安全的基础上使用变量
用操作accessToken来举例:
1.获取accessToken
this.getWxMpConfigStorage().isAccessTokenExpired()
2.获取锁
Lock lock = this.getWxMpConfigStorage().getAccessTokenLock();
3.构建url
String url = String.format(WxMpService.GET_ACCESS_TOKEN_URL,this.getWxMpConfigStorage().getAppId(), this.getWxMpConfigStorage().getSecret());
4.发送http请求
//目前HttpClient最新版的实现类为CloseableHttpClient
CloseableHttpResponse response = getRequestHttpClient().execute(httpGet)
5.处理返回结果
String resultContent = new BasicResponseHandler().handleResponse(response);
6.获取token
WxAccessToken accessToken = WxAccessToken.fromJson(resultContent);
7.更新内存
this.getWxMpConfigStorage().updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
8.返回token
return this.getWxMpConfigStorage().getAccessToken();
9.释放锁
lock.unlock();
微信客户端配置信息存储解决方案相关推荐
- “请在微信客户端打开链接”解决方案
1."请在微信客户端打开链接"解决方案 https://blog.csdn.net/weixin_41190571/article/details/82990839 2.微信调试工 ...
- h5支付不能打开支付宝 ios_IOS WKWebView H5支付打开支付宝/微信客户端
近期公司项目中的App使用WKWebView封装作为一个壳,加载web的网页,其中的支付使用的是H5支付,在APP中需要调起微信和支付客户端进行支付,过程中遇到了一些问题,好在通过查找资料找到了以下解 ...
- Java架构学习(五十一)微信公众号开发混合开发技术流程微信推送原理外网映射工具使用微信公众号接口认证代码获取微信客户端信息解决微信消息幂等问题
一.微信公众号项目 SOA架构:面向接口开发,也就是相当于把传统的那种ssh项目的业务逻辑层抽取出来 做成接口. SSH架构与分布式架构的区别 SSH架构是整个项目的任何模块都在一个项目里面 分布式架 ...
- 微信开发(02)之处理微信客户端发来的消息
在上一篇微信开发的博文中微信开发(01)之如何成为开发者,我们开启了微信开发者模式,本篇博文我们简单的处理微信关注者发给我们公众号的消息. 在开启微信开发者模式时,我们配置了一个URL地址,当我们提交 ...
- java 配置微信js sdk_解析微信JS-SDK配置授权,实现分享接口
微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...
- 神策数据张涛:微信生态数字化运营解决方案
本文根据神策数据副总裁张涛关于微信生态数字化运营解决方案相关直播内容整理而成,本文主要内容如下: 微信生态运营现状 & 痛点 微信生态数字化运营解决方案 运营落地场景 & 案例展示 一 ...
- EasySQLMAIL中企业微信的配置方法
EasySQLMAIL1.0.1208中提供了企业微信消息的发送功能.可以发送文字消息和文件消息(如Excel和PDF). 企业微信的配置分两步:1-添加企业信息(要用到企业微信的"企业ID ...
- php调用jssdk转发_php一个文件搞定微信jssdk配置
php一个文件搞定微信jssdk配置: 包括缓存,包括https通讯,获取微信access_token,签名什么的都有.但是防范性编程做得比较少,商业用的话,需要完善下代码. 使用姿势 ^ajax(C ...
- python 请在微信客户端打开_完美解决 请在微信客户端打开链接
完美解决 请在微信客户端打开链接 背景描述 相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面.大概在1年前,专门安排了一个人去解决这个技术问题, ...
最新文章
- 一道简约而不简单的算法题——数据流的中位数 | 附动画解析
- linux~mysql安装、卸载及使用命令
- [OS复习]操作系统综述2
- Android魔法(第四弹)—— 一步步实现百叶窗效果
- XCode发布IPA离线安装包步骤
- 【每日一题】4月8日题目精讲 黑白树
- JavaScript中String的slice(),substr(),substring()三者区别
- LJL-Solution 清空页面所有值的 (2)
- [转]ISO镜像工具PowerISO和UltraISO制作ISO光盘镜像教程
- 去宇宙条面试被问:HashMap 为什么线程不安全?
- python程序员面试宝典 剑指offer_自学java,找工作看程序员面试宝典和剑指offer,还是看java面试宝典和程序员面试宝典?...
- mine 规范_模型规范要求
- 利用com.googlecode.libphonenumber解析手机号归属地
- 软件构造过程与配置管理
- vue修改默认V型图标
- UI常见面试题-整体素养篇
- java高校选课系统博客,学生选课系统
- python文章抄袭检测_CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...
- 解决cdt.causality.graph.GES()报错的问题
- MR(混合现实)无绿幕拍摄