“出于安全考虑,在第三方平台创建审核通过后,微信服务器每隔10分钟会向第三方的消息接收地址推送一次component_verify_ticket,用于获取第三方平台接口调用凭据”。这是文档中的原话,也就是说我们在获取access_token的时候是要先得到component_verify_ticket的,而component_verify_ticket是每10分钟向我们的接收地址推送一次。

而域名地址是由我们自己去服务器上去部署,如下图:

/// <summary>
/// 一.推送component_verify_ticket
/// </summary>
/// <param name="collection"></param>
/// <returns></returns>
[HttpPost]
public ActionResult Index(FormCollection collection)
{
//在公众号第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket。第三方平台方在收到ticket推送后也需进行解密
byte[] data = Request.BinaryRead(Request.TotalBytes);
string postData = Encoding.Default.GetString(data);
//公众号第三方平台的appid
string appId = ConfigurationManager.AppSettings["WeixinAppID"];
//第三方平台申请时填写的接收消息的校验token
string token = ConfigurationManager.AppSettings["WeixinToken"];
//第三方平台申请时填写的接收消息的加密symmetric_key
string encodingAesKey = ConfigurationManager.AppSettings["WeixinEncodingAESKey"];
string sMsg = "";//解密后的内容
var msg = new Tencent.WXBizMsgCrypt(token, encodingAesKey, appId); int ret = msg.DecryptMsg(
Request.QueryString["msg_signature"],
Request.QueryString["timestamp"],
Request.QueryString["nonce"],
postData,
ref sMsg); var xDoc = XDocument.Parse(sMsg);
var q = (from c in xDoc.Elements() select c).ToList();
var infoType = q.Elements("InfoType").First().Value;
switch (infoType)
{
case "component_verify_ticket":
//q.Elements("ComponentVerifyTicket").First()
//这里就是component_verify_ticket的值,保存起来就可以了,处理完成后在页面上输出success,通知微信服务器已经接收到ticket
string _AppId = q.Elements("AppId").First().Value;
string _CreateTime = q.Elements("CreateTime").First().Value;
string _InfoType = q.Elements("InfoType").First().Value;
string _ComponentVerifyTicket = q.Elements("ComponentVerifyTicket").First().Value;
DateTime dt = DateTime.Now; var datacvt = from t in dbContext.tb_ComponentVerifyTicket
select t;
tb_ComponentVerifyTicket tb = new tb_ComponentVerifyTicket();
if (datacvt.ToList().Count == )//添加
{
tb.Cvt_AppId = _AppId;
tb.Cvt_CreateTime = _CreateTime;
tb.Cvt_InfoType = _InfoType;
tb.Cvt_ComponentVerifyTicket = _ComponentVerifyTicket;
tb.Cvt_DateTime = dt;
dbContext.tb_ComponentVerifyTicket.Add(tb);
dbContext.SaveChanges();
}
else//修改
{
foreach (var item in datacvt)
{
item.Cvt_Id = item.Cvt_Id;
item.Cvt_AppId = _AppId;
item.Cvt_CreateTime = _CreateTime;
item.Cvt_InfoType = _InfoType;
item.Cvt_ComponentVerifyTicket = _ComponentVerifyTicket;
item.Cvt_DateTime = dt;
}
dbContext.SaveChanges();
}
Response.Write("success");
Response.End();
break;
default:
break;
}
return View();
}

这里我们得到了component_verify_ticket,也就是我要的“ string _ComponentVerifyTicket = q.Elements("ComponentVerifyTicket").First().Value; ”

OK,到这里之后我们接下来的就是要获取access_token。

因为access_token的有效期为两个小时“第三方平台compoment_access_token是第三方平台的下文中接口的调用凭据,也叫做令牌(component_access_token)。每个令牌是存在有效期(2小时)的,且令牌的调用不是无限制的,请第三方平台做好令牌的管理,在令牌快过期时(比如1小时50分)再进行刷新。” So,我们可以考虑做一个Windows服务每两个小时去执行向微信服务发送请求又或者是时间对比法 (先记录得到component_access_token的时间再取component_access_token值的时候查得当前时间,通过两个时间差做比较,如果大于等于2小时就重新去查询,否则去查询数据库或缓存中的component_access_token)

protected override void OnStart(string[] args)
{
string str = "服务开启";
System.Threading.Timer t = new System.Threading.Timer
(new System.Threading.TimerCallback(testTheNet), null, * * , * * ); //System.Threading.Timer t = new System.Threading.Timer
// (new System.Threading.TimerCallback(_testime), null, 1000 * 60, 1000 * 60); }   

到这里access_token我们就已经获取到了~~

ASP.NET之MVC 微信公众号授权给第三方平台的技术实现流程(获取第三方平台access_token)的更多相关文章

  1. 微信公众号的搭建-第四天(2)-获取并缓存access_token

    1. 什么是access_token? 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等 ...

  2. C#/ASP.NET MVC微信公众号接口开发之从零开发(四) 微信自定义菜单(附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  3. C#/ASP.NET MVC微信公众号接口开发之从零开发(三)回复消息 (附源码)

    C#/ASP.NET MVC微信接口开发文章目录: 1.C#/ASP.NET MVC微信公众号接口开发之从零开发(一) 接入微信公众平台 2.C#/ASP.NET MVC微信公众号接口开发之从零开发( ...

  4. 【tp5.1】微信公众号授权登录及获取信息录入数据库

    微信公众号开发文档链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432 微信公众号授权登录分为两种: 1.以 ...

  5. uniapp - 微信公众号授权登录

    [缘由] 采用uniapp进行微信小程序和微信公众号双版本开发:考虑到用户唯一性,我们后端确定了以“unionid”.作为唯一标识. 有的小伙伴估计也是刚入这坑,我就简单说一下步骤流程   [摸索] ...

  6. ASP.NET MVC 微信公众号支付,微信公众平台配置

    微信公众号支付,首先要登录微信公众号进行配置: 第一步:配置网页授权域名

  7. asp.net mvc 微信公众号token验证

    本人的公众号要申请成为开发者,必须经过token认证.微信公众号的官方代码只列出了PHP代码的实例,明显是歧视.net用户.我用的asp.net mvc中的web api,结果调了好久都没有成功,最后 ...

  8. C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)

    文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们 ...

  9. 解决微信公众号授权登录和开放平台微信第三方应用授权登录获取到的用户Openid关联问题

    开发背景: 最近一段时间一直在做关于微信方面的网站应用开发,这段时间也收获的不少关于微信开发方面的开发技能,接触的比较多的主要有微信公众号和微信网站app第三方登录授权,以及微信会员卡,优惠券和扫描二 ...

随机推荐

  1. [转] vue父组件触发子组件事件

    1. 父组件中获取子组件方法 $children 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <template>     < ...

  2. EF core的原生SQL查询以及用EF core进行分页查询遇到的问题

    在用.net core进行数据库访问,需要处理一些比较复杂的查询,就不得不用原生的SQL查询了,然而EF Core 和EF6 的原生sql查询存在很大的差异. 在EF6中我们用SqlQuery和Exe ...

  3. Mysql外键约束之CASCADE、SET NULL、RESTRICT、NO ACTION

    Mysql中有目前只有InnoDB引擎支持外键约束,InnoDB中外键约束定义的语法如下: ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN ...

  4. Java之路---Day17(数据结构)

    2019-11-04-23:03:13 目录: 1.常用的数据结构 2.栈 3.队列 4.数组 5.链表 6.红黑树 常用的数据结构: 包含:栈.队列.数组.链表和红黑树 栈: 栈:stack,又称堆 ...

  5. 结合 Vue.observable 写一个简易 Vuex

    作为 Vue 全家桶的一员,Vuex 的重要性不言而喻,不管是用来管理状态,还是封装 Controler 都很好用 不过在一些体量较小的项目中,为了几个简单的状态或者处理函数而引入 Vuex,就像是高 ...

  6. i春秋——“百度杯”CTF比赛 十月场——GetFlag(md5碰撞、文件包含、网站绝对路径)

    需要提交的captcha满足等式,肯定就是MD5碰撞了 附上脚本 import hashlib def func(md5_val): for x in range(1,100000000): md5_ ...

  7. cc.isChildClassOf 判断两个类的继承关系

    使用 cc.isChildClassOf 来判断两个类的继承关系: var Texture = cc.Class(); var Texture2D = cc.Class({ extends: Text ...

  8. 【Cookie】java.lang.IllegalArgumentException An invalid character [32] was present in the Cookie value

    创建时间:6.30 java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie va ...

  9. win10锁屏壁纸文件夹位置

    Win10默认系统下载的壁纸怎么下载?在哪里找出来呢?首先我们要把系统的锁屏壁纸要设置为Windows聚焦才会自动从微软的服务器上去下载壁纸.这些都是随机下载的.每个人的都Win10 都有可能不一样. ...

  10. arXiv上传文章latex源码技巧

    <<2019.09.27>>更新 上传PS文件看来也是不行了,一大早收到邮件被arXiv标记为incomplete了.哎,还是老老实实提交Latex source files吧 ...