“出于安全考虑,在第三方平台创建审核通过后,微信服务器每隔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);//公众号第三方平台的appidstring appId = ConfigurationManager.AppSettings["WeixinAppID"];//第三方平台申请时填写的接收消息的校验tokenstring token = ConfigurationManager.AppSettings["WeixinToken"];//第三方平台申请时填写的接收消息的加密symmetric_keystring 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,通知微信服务器已经接收到ticketstring _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_ComponentVerifyTicketselect t;tb_ComponentVerifyTicket tb = new tb_ComponentVerifyTicket();if (datacvt.ToList().Count == 0)//添加{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, 1000 * 60 * 120, 1000 * 60 * 120);//System.Threading.Timer t = new System.Threading.Timer// (new System.Threading.TimerCallback(_testime), null, 1000 * 60, 1000 * 60);}

  

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

转载于:https://www.cnblogs.com/MingQiu/p/5591870.html

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

  1. 微信公众号授权登录(asp.net + angular)

    微信是时下最火的,上面有数以亿计的用户,如果能接入微信将大大减低注册门槛,当然,接入微信登录是有门槛的.微信登录一般有两个,一个是微信开放平台授权登录,一个是微信公众号授权登录,两者都需要认证才可以继 ...

  2. 微信登录(微信公众号授权)的开发(详解)

    1.UnionId和OpenId 微信登录最重要的两个返回信息,一个是UnionId,一个是OpenId.两者之间有着必然的联系. 首先,先来理一下微信开放平台的架构.开发微信登录,必须有一个开放平台 ...

  3. 微信登录 sdk 服务器,微信登录(微信公众号授权)的开发(详解)——两三行代码的事,何必呢...

    新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方法参考 新版重构的SDK已经开始在写了,具体的使用方 ...

  4. 微信公众号授权步骤详细步骤介绍和整合springboot开发(java版)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 一.微信公众号授权步骤 首先到微信公众平台注册账号,可以看到有四种类型(服务号,订阅号,小程 ...

  5. vue移动端项目微信公众号授权登录

    前言 在我们做移动端项目时, 很多功能是以登录后才能进行后续的操作, 并且许多pc端的网页都有微信扫码登录功能, 为了做到pc与移动端统一, 往往移动端项目需要添加微信登录功能, 那么为什么手机端不能 ...

  6. Java在Web端微信公众号授权登录

    Java在Web端微信公众号授权登录 1.需要在微信开发平台配置 url:是自己服务中的微信需要推给你的地址(需要使用二级域名,可以去添加链接描述)购买9块钱1个月使用权或者白嫖都可 token 这个 ...

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

    uniapp微信网页授权 uniapp中h5网页微信公众号授权 主要代码 获取code返回的code截取代码 uniapp中h5网页微信公众号授权 微信官方文档–>网页授权 uniapp中h5网 ...

  8. vue h5微信公众号授权获取用户信息

    vue h5微信公众号授权获取用户信息 1.申请测试账号 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 2.修改网页授权 ...

  9. H5 微信公众号 授权登录 前后端分离篇(资料准备+前端01)

    实现微信公众号授权登录,很简单,但是注意的地方要细心,小伙伴们跟着我的思路一起实现吧! 文章目录 一.帐号申请 1. 正式账号 2. 测试帐号 二.微信文档 2.1. 文档主页 2.2. 授权流程 2 ...

最新文章

  1. 开始iOS 7中自动布局教程(一)
  2. mapreduce工作流程_详解MapReduce中的五大编程模型
  3. 【Android NDK 开发】Android Studio 使用 CMake 导入动态库 ( 构建脚本路径配置 | 指定动态库查找路径 | 链接动态库 )
  4. 你这么喜欢敲代码,那么技术的乐趣在哪里?
  5. linux安装lua相关编译报错
  6. 18复变函数的积分(四)
  7. 卷积的物理意义是什么?
  8. ROS2——通信接口(十)
  9. linux源码解析-dup_task_struct函数
  10. 【分享】郝斌老师C语言 教程 1 到 180课
  11. 富文本编辑器上传图片不显示问题
  12. java中的字符串池
  13. 高速公路匝道口事故何时了?
  14. 通过谷歌骇客语法搜索后台:_书评:我们的骇客并拥有
  15. 【AC自动机】P3966 [TJOI2013] 单词
  16. 707. 设计链表(中等 链表)
  17. html(标题加上图片的方法,笔记)
  18. 白鹭引擎egert+PHP后端手游宠物小精灵题材源码
  19. systemd介绍六:Journalctl查看并操作sytemd日志
  20. linux格式化fat的命令,在Linux中使用mkfs命令格式化磁盘或分区上的文件系统

热门文章

  1. php-fpm安装包_linux下安装php php-fpm(转载)
  2. 让R与Python共舞
  3. 隐藏网络计算机,XP电脑如何在网络中隐藏自己的计算机名称?
  4. Python数据可视化-matplotlib and seaborn
  5. wps中下划线怎么也去不掉_黑头究竟怎么形成的?为什么总是去不掉?那是因为你用错方法...
  6. matlab中if语句多个_MATLAB入门教程 | 003基础知识
  7. 人脸检测(五)--adaboost总结,整理
  8. 地址解析协议(Address Resolution Protocol,ARP)
  9. 安装node.jsvue3.0脚手架
  10. java判断路径是否存在_科学网—Java判断文件目录以及文件是否存在 - 林清莹的博文...