基于senparc实现的微信AccessToken接口全局统一获取
在senparc中实现了AccessToken的全局获取方式,因微信项目涉及跨语言、跨团队,外包方式的合作,需要通过接口方式供合作方调用,现将使用webapi实现的接口分享给大家:
1、自定义一个对外统一的AccessToken
/// <summary>
/// 自定义一个对外统一的AccessToken
/// </summary>
[Serializable]
public class MPAccessTokenInfo
{
/// <summary>
/// 获取到的凭证
/// </summary>
public string AccessToken { get; set; } /// <summary>
/// 凭证到什么时间过期
/// </summary>
public DateTime AccessTokenExpireTime { get; set; }
}
2、接口方法
//-----------------------------------------------------------------------
// <copyright file="WechatOpenController.cs" company="FenSiShengHuo, Ltd.">
// Copyright (c) 2018 , All rights reserved.
// </copyright>
//----------------------------------------------------------------------- using Senparc.Weixin.Open.Containers;
using System;
using System.Web.Http; namespace DotNet.WeChat.API.Controllers
{
using DotNet.Utilities;
using DotNet.WeChat.API.Common;
using Senparc.Weixin.Containers;
using Senparc.Weixin.MP.Containers;
using Senparc.Weixin.Open.ComponentAPIs; /// <summary>
/// WechatOpenController
///
/// 修改纪录
///
/// 2018-07-27 版本:1.0 JiShiYu 创建文件。
///
/// <author>
/// <name>JiShiYu</name>
/// <date>2018-07-27</date>
/// </author>
/// </summary> public class WechatController : ApiController
{
/// <summary>
/// 获取微信调用的Token 公众号的方式
/// </summary>
/// <returns></returns>
public JsonResult<MPAccessTokenInfo> GetMPAccessToken()
{
JsonResult<MPAccessTokenInfo> result = new JsonResult<MPAccessTokenInfo>();
result.Status = false;
result.StatusMessage = "没有获取到";
try
{
var accessTokenResult = AccessTokenContainer.GetAccessTokenResult(GlobalSetting.WeixinAppId);
var accessTokenBag = BaseContainer<AccessTokenBag>.TryGetItem(GlobalSetting.WeixinAppId);
MPAccessTokenInfo info = new MPAccessTokenInfo();
info.AccessToken = accessTokenResult.access_token;
info.AccessTokenExpireTime = accessTokenBag.AccessTokenExpireTime;
result.Status = true;
result.Data = info;
result.StatusMessage = "成功获取";
}
catch (Exception ex)
{
NLogHelper.Warn(ex, "WechatOpenController : ApiController GetAccessToken");
result.Status = false;
result.StatusMessage = "异常:" + ex.Message;
} return result;
} }
}
3、接口返回值
{
"Status": true,
"ResultValue": "",
"StatusCode": "OK",
"StatusMessage": "成功获取",
"RecordCount": 0,
"Data": {
"AccessToken": "12_wGwcOStoi9XzRjjCzcwMgubNythtfRGqAn1ntj19I4rR_Rze5vvk5FQyd2ELUmDkFYR47lzkKdnzYzQV1Iqdj0D7tGTguqesXBTHOlLeiUmjMrbGRN_vAG26QFEilArzXBcRMCCcob2_FNr1EEZaAHARRM",
"AccessTokenExpireTime": "2018-07-29 21:21:05"
}
}
返回值中AccessTokenExpireTime表示当前的AccessToken在什么时候过期,第三方调用时可以据此设置缓存,避免每次都调用接口获取,减少接口交互次数。
基于senparc实现的微信AccessToken接口全局统一获取的更多相关文章
- 基于Node.js的微信JS-SDK后端接口实现
做了一个网站,放到线上,用微信打开,点击分享,可是分享后发给朋友的链接卡片是微信默认自带的,如下: 这标题,描述以及图片是默认自带的,丑不说,分享给别人还以为是盗号网站呢,而接入微信的JSSDK后,分 ...
- 微信JS接口
微信JS接口 分享到朋友圈 分享给朋友 分享到QQ 拍照或从手机相册中选图 识别音频并返回识别结果 使用微信内置地图查看位置来源:http://www.cnblogs.com/txw1958/p/ ...
- Senparc.Weixin SDK 微信公众号 .NET 开发教程 索引
Senparc.WeixinSDK从一开始就坚持开源的状态,这个过程中得到了许多朋友的认可和支持. 目前SDK已经达到比较稳定的版本,这个过程中我觉得有必要整理一些思路和经验,和大家一起分享.也欢迎大 ...
- 微信JS-SDK 接口调用与 php 遇到的坑
问题:config:invalid signature一直爆这个错误 解决: 看我把这些坑都总结了一下:要命的invalid signature. https://segmentfault.com/q ...
- 总结的一些微信API接口
本文给大家介绍的是个人总结的一些微信API接口,包括微信支付.微信红包.微信卡券.微信小店等,十分的全面,有需要的小伙伴可以参考下. 1. [代码]index.php <?php include ...
- asp.net mvc 如何调用微信jssdk接口:分享到微信朋友(圈)| 分享到qq空间
如何在asp.net mvc 项目里, 调用微信jssdk接口,现实功能: 分享到微信朋友(圈)| 分享到qq空间 1 创建一个Action,准备一些数据,初始化数据(签名): /// <sum ...
- java微信接口之二—获取用户组
一.微信获取用户组接口简介 1.请求 该请求也是GET方式请求.请求的url格式如下: https://api.weixin.qq.com/cgi-bin/groups/get?access_toke ...
- php获取微信基础接口凭证Access_token
php获取微信基础接口凭证Access_token的具体代码,供大家参考,具体内容如下 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进 ...
- JAVA微信支付接口开发——支付
微信支付接口开发--支付 这几天在做支付服务,系统接入了支付宝.微信.银联三方支付接口.个人感觉支付宝的接口开发较为简单,并且易于测试. 关于数据传输,微信是用xml,所以需要对xml进行解析. 1. ...
随机推荐
- Navicat 远程连接Docker容器中的mysql 报错:1251 - Client does not support authentication protocol 解决办法。
出现这个问题 首先进入 1.docker exec -it mysql02 bash //mysql02是mysql容器的别名 2.mysql -uroot -p 3.输入密码 4.进入my ...
- hive聚合函数和表生成函数
explode生成单独的一行
- Django--CRM--一级, 二级 菜单表
一. 一级菜单表 1. 首先要修改权限表的字段, 在权限表下面加上icon和 is_menu 的字段 2. 展示结果 # 我们既然想要动态生成一级菜单,那么就需要从数据库中拿出当前登录的用户的菜单表是 ...
- python学习笔记(11)--文件与数据格式化
文件的概念: 文件是数据的抽象和集合,是存储在辅助存储器上的数据序列,文件是数据存储的一种形式,文件的展现形态,文本文件和二进制文件. 文本文件输出: f.txt文件保存:“我是中国人” >&g ...
- app自动化测试Appium+python
一.node.js安装 https://nodejs.org/en/download/ ##一直下一步 ###cmd查看 二. .NET Framework安装 https://www.micros ...
- 数据驱动-参数化(Parameters)
在录制程序运行的过程中,Vugen(脚本生成器)自动生成了脚本以及录制过程中实际用到的数据.在这个时候,脚本和数据是混在一起的. 在登录操作中,很明显xpj与123123是填入的数据,如果Contro ...
- java 环境变量配置 详解!
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SECCON 2014 CTF:Shuffle
很简单的一道小题 dia看一下是ELF文件 运行之: St0CFC}4cNOeE1WOS !eoCE{ CC T2hNto 是一串乱七八糟的字符 ida看一下: 很简单的逻辑 v5和v6是随机生成的两 ...
- SQL字段类型bit 查询时注意
sql 查询时 字段=1 或 字段=0 c# 里也是
- vue 关于生命周期
序言: 1. vue 单组件的生命周期: 2. vue 父子组件的生命周期: 3. axios 异步请求 与 vue 的组件周期: 一.vue 每个组件的生命周期 关于每个组件的生命周期,官方文档里也 ...