微信公众号开发——获取access_token
第一步:登陆公众号 拿到 AppID(应用ID) 和 AppSecret(应用密钥)
第二步:公众号 接口权限 查看 对话服务>基础支持>获取access_token
上代码
写了3个类
BasisSupport 基础支持
CacheHelper 缓存帮助
Sender 发起请求
BasisSupport
using Codeplex.Data;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WeiXinPublic.utils;namespace WeiXinPublic.dialog_service
{/// /// 基础支持/// 1.获取access_token/// 2.获取微信服务器IP地址/// public class BasisSupport{#region 获取access_token/// /// 获取access_token json字符串 调用微信接口/// /// /// /// /// private static string get_accesstoken(string appid, string secret){string res = string.Empty;object obj = CacheHelper.GetCache("access_token");if (obj != null){res = obj.ToString();}else{string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret;//通过接口去取res = Sender.Get(url);CacheHelper.AddCache("access_token", res, DateTime.Now.AddMinutes(120)); //ccess_token的有效期目前为2个小时 }return res;}/// /// 获取access_token/// /// /// /// public static Hashtable GetAccessToken(string appid, string secret){string res = get_accesstoken(appid, secret);var json = DynamicJson.Parse(res);var access_token = json.access_token;var expires_in = json.expires_in;//万能字典Hashtable ht = new Hashtable();ht.Add("access_token", access_token);ht.Add("expires_in", expires_in);return ht;} #endregion }
}
CacheHelper
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;namespace WeiXinPublic.utils
{public class CacheHelper{public static List<string> AllUseCacheKey = new List<string>();/// /// 添加缓存/// /// /// /// public static void AddCache(string key, object value, DateTime absoluteExpiration){if (!AllUseCacheKey.Contains(key)){AllUseCacheKey.Add(key);}HttpContext.Current.Cache.Add(key, value, null, absoluteExpiration, TimeSpan.Zero, System.Web.Caching.CacheItemPriority.Normal, null);}/// /// 添加缓存/// /// /// public static void AddCache(string key, object value){if (!AllUseCacheKey.Contains(key)){AllUseCacheKey.Add(key);}System.Web.Caching.Cache cache = HttpRuntime.Cache;cache.Insert(key, value);}/// /// 从缓存中取数据/// /// key/// public static object GetCache(string key){if (AllUseCacheKey.Contains(key) && HttpRuntime.Cache[key] != null){return HttpRuntime.Cache[key];}else{return null;}}/// /// 移除缓存/// /// public static void RemoveCache(string key){if (AllUseCacheKey.Contains(key)){AllUseCacheKey.Remove(key);}HttpContext.Current.Cache.Remove(key);}/// /// 清空使用的缓存/// public static void ClearCache(){foreach (string value in AllUseCacheKey){HttpContext.Current.Cache.Remove(value);}AllUseCacheKey.Clear();}}
}
Sender
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;namespace WeiXinPublic.utils
{public class Sender{/// /// Get方式 访问微信接口/// /// /// public static string Get(string url){HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);myRequest.Method = "GET";HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();using (StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8)){return reader.ReadToEnd();}}/// /// Post方式 访问微信接口/// /// /// /// public static string Post(string url, string postData){Stream outstream = null;Stream instream = null;StreamReader sr = null;HttpWebResponse response = null;HttpWebRequest request = null;Encoding encoding = Encoding.UTF8;byte[] data = encoding.GetBytes(postData);// 准备请求...try{// 设置参数request = WebRequest.Create(url) as HttpWebRequest;CookieContainer cookieContainer = new CookieContainer();request.CookieContainer = cookieContainer;request.AllowAutoRedirect = true;request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded";request.ContentLength = data.Length;outstream = request.GetRequestStream();outstream.Write(data, 0, data.Length);outstream.Close();//发送请求并获取相应回应数据response = request.GetResponse() as HttpWebResponse;//直到request.GetResponse()程序才开始向目标网页发送Post请求instream = response.GetResponseStream();sr = new StreamReader(instream, encoding);//返回结果网页(html)代码string content = sr.ReadToEnd();string err = string.Empty;return content;}catch (Exception ex){string err = ex.Message;return string.Empty;}}}
}
外部调用
Hashtable ht_access_token = BasisSupport.GetAccessToken(appid, secret);
string access_token = ht_access_token["access_token"].ToString();
类库结构图
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
