首页 数据库 mysql教程 微信公共平台开发-(.net实现)5--access

微信公共平台开发-(.net实现)5--access

Jun 07, 2016 pm 03:44 PM
.net 实现 平台 开发 微信

每次在于微信交互时,都要用到access_token,但是这个值限制的是有时间的,但是access_token,在以后的高级功能里面会经常用到,所以这里不得不这里对前面所讲解的access_token改造一下。 另外需要说明的是access_token是变化的,有自己的周期,官方解释为:"

    每次在于微信交互时,都要用到access_token,但是这个值限制的是有时间的,但是access_token,在以后的高级功能里面会经常用到,所以这里不得不这里对前面所讲解的access_token改造一下。
   另外需要说明的是access_token是变化的,有自己的周期,官方解释为:"有效期为7200秒",这就要求我们把获得的access_token存入一个物理文件或者Application中,请求到过期后修改这些内容,需要用的时候读出来.或者是存入数据库,到期时修改改access_token的值。
   有些人可能想到了,如果过期我就在获得一个就好了,不用物理文件和Application也可以达到同样的效果,但是需要注意了微信平台对每天获得,access_token的次数也作了限制,一个用户出发多次,如果用户多,那肯定就超出了。所以我们还是按照以上的思路实现这些功能:
    在此之前我们已经了解了获得access_token的方法(连接)http://www.cnblogs.com/QLJ1314/p/3838058.html,现在只需要保证它的随时更新就好了.

      首先建立一个Access_token类

  

微信公共平台开发-(.net实现)5--access微信公共平台开发-(.net实现)5--access

<span> 1</span>     <span>///</span> <span><summary></summary></span>  
<span> 2</span>     <span>///</span><span>Access_token 的摘要说明  
</span><span> 3</span>     <span>///</span> <span></span>  
<span> 4</span>     <span>public</span> <span>class</span><span> Access_token  
</span><span> 5</span> <span>    {  
</span><span> 6</span>         <span>public</span><span> Access_token()  
</span><span> 7</span> <span>        {  
</span><span> 8</span>             <span>//</span>  
<span> 9</span>             <span>//</span><span>TODO: 在此处添加构造函数逻辑  
</span><span>10</span>             <span>//</span>  
<span>11</span> <span>        }  
</span><span>12</span>         <span>string</span><span> _access_token;  
</span><span>13</span>         <span>string</span><span> _expires_in;  
</span><span>14</span>       
<span>15</span>         <span>///</span> <span><summary></summary></span>  
<span>16</span>         <span>///</span><span> 获取到的凭证   
</span><span>17</span>         <span>///</span> <span></span>  
<span>18</span>         <span>public</span> <span>string</span><span> access_token  
</span><span>19</span> <span>        {  
</span><span>20</span>             <span>get</span> { <span>return</span><span> _access_token; }  
</span><span>21</span>             <span>set</span> { _access_token =<span> value; }  
</span><span>22</span> <span>        }  
</span><span>23</span>       
<span>24</span>         <span>///</span> <span><summary></summary></span>  
<span>25</span>         <span>///</span><span> 凭证有效时间,单位:秒  
</span><span>26</span>         <span>///</span> <span></span>  
<span>27</span>         <span>public</span> <span>string</span><span> expires_in  
</span><span>28</span> <span>        {  
</span><span>29</span>             <span>get</span> { <span>return</span><span> _expires_in; }  
</span><span>30</span>             <span>set</span> { _expires_in =<span> value; }  
</span><span>31</span> <span>        }  
</span><span>32</span>     }  
登录后复制
View Code

微信公共平台开发-(.net实现)5--access微信公共平台开发-(.net实现)5--access

<span>1</span>     <?xml version=<span>"<span>1.0</span><span>"</span> encoding=<span>"</span><span>utf-8</span><span>"</span>?>  
<span>2</span>     <xml>  
<span>3</span>       <access_token>初始值可以随便写</access_token>  
<span>4</span>       <access_youxrq><span>1990</span>/<span>12</span>/<span>12</span> <span>16</span>:<span>06</span>:<span>38</span></access_youxrq>  
<span>5</span>     </xml>  
登录后复制
View Code

之前获得Access_token的方法改造一下,让他给Access_token实例赋值

微信公共平台开发-(.net实现)5--access微信公共平台开发-(.net实现)5--access

<span> 1</span>     <span>public</span> <span>static</span><span> Access_token GetAccess_token()  
</span><span> 2</span> <span>        {  
</span><span> 3</span>             <span>string</span> appid =<span> 你的appid ;  
</span><span> 4</span>             <span>string</span> secret =<span> 你的secret;  
</span><span> 5</span>             <span>string</span> strUrl = <span>"</span><span>https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=</span><span>"</span> + appid + <span>"</span><span>&secret=</span><span>"</span> +<span> secret;  
</span><span> 6</span>             Access_token mode = <span>new</span><span> Access_token();  
</span><span> 7</span>       
<span> 8</span>             HttpWebRequest req =<span> (HttpWebRequest)HttpWebRequest.Create(strUrl);  
</span><span> 9</span>       
<span>10</span>             req.Method = <span>"</span><span>GET</span><span>"</span><span>;  
</span><span>11</span>             <span>using</span> (WebResponse wr =<span> req.GetResponse())  
</span><span>12</span> <span>            {  
</span><span>13</span>                 HttpWebResponse myResponse =<span> (HttpWebResponse)req.GetResponse();  
</span><span>14</span>       
<span>15</span>                 StreamReader reader = <span>new</span><span> StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);  
</span><span>16</span>       
<span>17</span>                 <span>string</span> content =<span> reader.ReadToEnd();  
</span><span>18</span>                 <span>//</span><span>Response.Write(content);  
</span><span>19</span>                 <span>//</span><span>在这里对Access_token 赋值  </span>
<span>20</span>                 Access_token token = <span>new</span><span> Access_token();  
</span><span>21</span>                 token = JsonHelper.ParseFromJson<access_token><span>(content);  
</span><span>22</span>                 mode.access_token =<span> token.access_token;  
</span><span>23</span>                 mode.expires_in =<span> token.expires_in;  
</span><span>24</span> <span>            }  
</span><span>25</span>             <span>return</span><span> mode;  
</span><span>26</span>         }  </access_token>
登录后复制
View Code

以上的方法用到了Json对象的处理,所以我把JsonHelper的代码一贴出来供大家参考,一下就是JsonHelper.cs的代码:

微信公共平台开发-(.net实现)5--access微信公共平台开发-(.net实现)5--access

<span> 1</span>     <span>using</span><span> System;  
</span><span> 2</span>     <span>using</span><span> System.IO;  
</span><span> 3</span>     <span>using</span><span> System.Text;  
</span><span> 4</span>     <span>using</span><span> System.Runtime.Serialization.Json;  
</span><span> 5</span>        
<span> 6</span>        
<span> 7</span>       
<span> 8</span>     <span>public</span> <span>class</span><span> JsonHelper  
</span><span> 9</span> <span>    {  
</span><span>10</span>         <span>///</span> <span><summary></summary></span>  
<span>11</span>         <span>///</span><span> 生成Json格式  
</span><span>12</span>         <span>///</span> <span></span>  
<span>13</span>         <span>///</span> <span><typeparam name="T"></typeparam></span>  
<span>14</span>         <span>///</span> <span><param name="obj"></span>  
<span>15</span>         <span>///</span> <span><returns></returns></span>  
<span>16</span>         <span>public</span> <span>static</span> <span>string</span> GetJson<t><span>(T obj)  
</span><span>17</span> <span>        {  
</span><span>18</span>             DataContractJsonSerializer json = <span>new</span><span> DataContractJsonSerializer(obj.GetType());  
</span><span>19</span>             <span>using</span> (MemoryStream stream = <span>new</span><span> MemoryStream())  
</span><span>20</span> <span>            {  
</span><span>21</span> <span>                json.WriteObject(stream, obj);  
</span><span>22</span>                 <span>string</span> szJson = Encoding.UTF8.GetString(stream.ToArray()); <span>return</span><span> szJson;  
</span><span>23</span> <span>            }  
</span><span>24</span> <span>        }  
</span><span>25</span>         <span>///</span> <span><summary></summary></span>  
<span>26</span>         <span>///</span><span> 获取Json的Model  
</span><span>27</span>         <span>///</span> <span></span>  
<span>28</span>         <span>///</span> <span><typeparam name="T"></typeparam></span>  
<span>29</span>         <span>///</span> <span><param name="szJson"></span>  
<span>30</span>         <span>///</span> <span><returns></returns></span>  
<span>31</span>         <span>public</span> <span>static</span> T ParseFromJson<t>(<span>string</span><span> szJson)  
</span><span>32</span> <span>        {  
</span><span>33</span>             T obj = Activator.CreateInstance<t><span>();  
</span><span>34</span>             <span>using</span> (MemoryStream ms = <span>new</span><span> MemoryStream(Encoding.UTF8.GetBytes(szJson)))  
</span><span>35</span> <span>            {  
</span><span>36</span>                 DataContractJsonSerializer serializer = <span>new</span><span> DataContractJsonSerializer(obj.GetType());  
</span><span>37</span>                 <span>return</span><span> (T)serializer.ReadObject(ms);  
</span><span>38</span> <span>            }  
</span><span>39</span> <span>        }  
</span><span>40</span>     }  </t></t></t>
登录后复制
View Code

其实还可以直接饮用Newtonsoft.Json.dll 可以直接操作json,这样更方便一些。

我们还需要写一个判断access_token是否过期如果过期更新XML文件的方法。

微信公共平台开发-(.net实现)5--access微信公共平台开发-(.net实现)5--access

<span> 1</span>     <span>///</span> <span><summary></summary></span>  
<span> 2</span>         <span>///</span><span> 根据当前日期 判断Access_Token 是否超期  如果超期返回新的Access_Token   否则返回之前的Access_Token  
</span><span> 3</span>         <span>///</span> <span></span>  
<span> 4</span>         <span>///</span> <span><param name="datetime"></span>  
<span> 5</span>         <span>///</span> <span><returns></returns></span>  
<span> 6</span>         <span>public</span> <span>static</span> <span>string</span><span> IsExistAccess_Token()  
</span><span> 7</span> <span>        {  
</span><span> 8</span>       
<span> 9</span>             <span>string</span> Token = <span>string</span><span>.Empty;  
</span><span>10</span> <span>            DateTime YouXRQ;  
</span><span>11</span>             <span>//</span><span> 读取XML文件中的数据,并显示出来 ,注意文件路径  </span>
<span>12</span>             <span>string</span> filepath = Server.MapPath(<span>"</span><span>XMLFile.xml</span><span>"</span><span>);  
</span><span>13</span>       
<span>14</span>             StreamReader str = <span>new</span><span> StreamReader(filepath, System.Text.Encoding.UTF8);  
</span><span>15</span>             XmlDocument xml = <span>new</span><span> XmlDocument();  
</span><span>16</span> <span>            xml.Load(str);  
</span><span>17</span> <span>            str.Close();  
</span><span>18</span> <span>            str.Dispose();  
</span><span>19</span>             Token = xml.SelectSingleNode(<span>"</span><span>xml</span><span>"</span>).SelectSingleNode(<span>"</span><span>Access_Token</span><span>"</span><span>).InnerText;  
</span><span>20</span>             YouXRQ = Convert.ToDateTime(xml.SelectSingleNode(<span>"</span><span>xml</span><span>"</span>).SelectSingleNode(<span>"</span><span>Access_YouXRQ</span><span>"</span><span>).InnerText);  
</span><span>21</span>       
<span>22</span>             <span>if</span> (DateTime.Now ><span> YouXRQ)  
</span><span>23</span> <span>            {  
</span><span>24</span>                 DateTime _youxrq =<span> DateTime.Now;  
</span><span>25</span>                 Access_token mode =<span> GetAccess_token();  
</span><span>26</span>                 xml.SelectSingleNode(<span>"</span><span>xml</span><span>"</span>).SelectSingleNode(<span>"</span><span>Access_Token</span><span>"</span>).InnerText =<span> mode.access_token;  
</span><span>27</span>                 _youxrq = _youxrq.AddSeconds(<span>int</span><span>.Parse(mode.expires_in));  
</span><span>28</span>                 xml.SelectSingleNode(<span>"</span><span>xml</span><span>"</span>).SelectSingleNode(<span>"</span><span>Access_YouXRQ</span><span>"</span>).InnerText =<span> _youxrq.ToString();  
</span><span>29</span> <span>                xml.Save(filepath);  
</span><span>30</span>                 Token =<span> mode.access_token;  
</span><span>31</span> <span>            }  
</span><span>32</span>             <span>return</span><span> Token;  
</span><span>33</span>         }  
登录后复制
View Code

好了,完成了上面的工作,我只需要在使用到access_token的时调用如下就OK了,“客户再也不用担心token的过期”
string _access_token = IsExistAccess_Token();

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

欧易交易所app国内下载教程 欧易交易所app国内下载教程 Mar 21, 2025 pm 05:42 PM

本文提供国内安全下载欧易OKX App的详细指南。由于国内应用商店限制,建议用户通过欧易OKX官方网站下载App,或使用官网提供的二维码扫描下载。下载过程中,务必核实官网地址,检查应用权限,安装后进行安全扫描,并启用双重验证。 使用过程中,请遵守当地法律法规,使用安全网络环境,保护账户安全,警惕诈骗,理性投资。 本文仅供参考,不构成投资建议,数字资产交易风险自负。

H5和小程序与APP的区别 H5和小程序与APP的区别 Apr 06, 2025 am 10:42 AM

H5、小程序和APP的主要区别在于:技术架构:H5基于网页技术,小程序和APP为独立应用程序。体验和功能:H5轻便易用,功能受限;小程序轻量级,交互性好;APP功能强大,体验流畅。兼容性:H5跨平台兼容,小程序和APP受平台限制。开发成本:H5开发成本低,小程序中等,APP最高。适用场景:H5适合信息展示,小程序适合轻量化应用,APP适合复杂功能应用。

H5页面制作和微信小程序有什么不同 H5页面制作和微信小程序有什么不同 Apr 05, 2025 pm 11:51 PM

H5更灵活,可定制性强,但需要娴熟的技术;小程序上手快,维护便捷,但受限于微信框架。

公司安全软件与应用冲突怎么办?HUES安全软件导致常用软件无法打开如何排查? 公司安全软件与应用冲突怎么办?HUES安全软件导致常用软件无法打开如何排查? Apr 01, 2025 pm 10:48 PM

公司安全软件与应用兼容性问题及排查方法许多企业为了保障内网安全,会安装安全软件。然而,安全软件有时...

企业微信中的JS资源缓存问题如何解决? 企业微信中的JS资源缓存问题如何解决? Apr 04, 2025 pm 05:06 PM

企业微信的JS资源缓存问题探讨在进行项目功能升级时,常常会遇到部分用户未能成功升级的情况,尤其是在企�...

H5和小程序如何选择 H5和小程序如何选择 Apr 06, 2025 am 10:51 AM

H5和小程序的选择取决于需求。对于跨平台、快速开发和高扩展性的应用,选择H5;对于原生体验、丰富功能和平台依附性的应用,选择小程序。

H5和小程序的推广方式有何不同 H5和小程序的推广方式有何不同 Apr 06, 2025 am 11:03 AM

H5与小程序的推广方式存在差异:平台依赖性:H5依赖浏览器,小程序依赖特定平台(如微信)。用户体验:H5体验较差,小程序提供类似原生应用的流畅体验。传播方式:H5通过链接传播,小程序通过平台分享或搜索。H5推广方式:社交分享、邮件营销、QR码、SEO、付费广告。小程序推广方式:平台推广、社交分享、线下推广、ASO、与其他平台合作。

C#.NET面试问题和答案:提高您的专业知识 C#.NET面试问题和答案:提高您的专业知识 Apr 07, 2025 am 12:01 AM

C#.NET面试问题和答案包括基础知识、核心概念和高级用法。1)基础知识:C#是微软开发的面向对象语言,主要用于.NET框架。2)核心概念:委托和事件允许动态绑定方法,LINQ提供强大查询功能。3)高级用法:异步编程提高响应性,表达式树用于动态代码构建。

See all articles