微信公众号平台接口开发:基础支持,获取access_token
新建Asp.net MVC 4.0项目

WeChatSubscript是项目UI层
WeChatTools是封装操作访问公众号接口的一些方法类库
获取AccssToken
我们要的得到AccessToken,这是所有接口访问的基础,我们看看官方给出的接口调用文档

很简单明了,grant_type=client_credential,这是固定的不会变
appid与secret就是前面一章我叫大家记起来的那个认证口令数据。
下边我们来实现这个功能,新建WeCharBase.cs
public class WeCharBase
{
private static readonly string appId;
private static readonly string appSecret; static WeCharBase()
{
appId = "**********";
appSecret = "832090bfddabbac19cc8da5053aea47b";
} public static string AccessToken
{
get { return GetAccessToken(); }
} /// <summary>获取access_token</summary>
/// <param name="appId"></param>
/// <param name="appSecret"></param>
/// <returns></returns>
private static string GetAccessToken()
{
if (HttpContext.Current == null)
{
return GetToken();
} var accessTokenCache = HttpContext.Current.Cache["access_token"];
if (accessTokenCache != null)
{
return accessTokenCache.ToString();
}
else
{
return GetToken();
}
} /// <summary>获取ccess_token</summary>
/// <returns></returns>
private static string GetToken()
{
try
{
var client = new WebClient();
client.Encoding = Encoding.UTF8;
var responseData = client.DownloadString(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appId, appSecret)); var javaScriptSerializer = new JavaScriptSerializer();
var accessDictionary = javaScriptSerializer.Deserialize<Dictionary<string, object>>(responseData);
var accessToken = accessDictionary["access_token"];
if (accessToken == null)
{
return string.Empty;
} HttpContext.Current.Cache.Insert("access_token", accessToken, null, DateTime.Now.AddSeconds(), TimeSpan.Zero, CacheItemPriority.Normal, null);
HttpContext.Current.Cache.Remove("ticket");
GetTicket(); return accessToken.ToString();
}
catch (Exception ex)
{
return ex.Message;
}
}
}
细心的童鞋功能注意到这里用了HttpContext.Current.Cache,为什么呢?
因为access_token在官方服务器会缓存2个小时,请求一次,这个access_token在2个小时内都有效
所以请求一次得到access_token后,在以后的2个小时内都可以用这个access_token去访问其他接口
所以没有必要每次请求不同的接口都请求access_token一次
UI层实现
我们新建控制器SubscriptController.cs
新增2个Action,ViewAccessToken
/// <summary>获取AccessToken</summary>
/// <returns></returns>
public ActionResult ViewAccessToken()
{
return View();
} /// <summary>获取AccessToken</summary>
/// <returns></returns>
public ActionResult GetAccessToken()
{
return Content(WeCharBase.AccessToken);
}
新增视图
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$("#btnGetAccessToken").click(function () {
$.ajax({
type: "Get",
url: "/Subscript/GetAccessToken",
success: function (responseTest) {
$("#txtAccessToken").text(responseTest);
}
});
});
});
</script> <table>
<tr>
<td>
<div class="title">获取access token</div>
<textarea id="txtAccessToken" name="txtAccessToken" rows="4" style="width:500px"></textarea>
</td>
<td><input class="btncss" id="btnGetAccessToken" type="button" value=" 获取 " /></td>
</tr>
</table>
运行项目,看看效果

成功了,是不是很简单呀
微信公众号平台接口开发系列
- 微信公众号平台接口开发:成为开发者
- 微信公众号平台接口开发:基础支持,获取access_token
- 微信公众号平台接口开发:基础支持,获取微信服务器IP地址
- 微信公众号平台接口开发:发送客服消息
- 微信公众号平台接口开发:菜单管理
- 微信公众号平台接口开发:待续
微信公众号平台接口开发:基础支持,获取access_token的更多相关文章
- 微信公众号平台接口开发:基础支持,获取微信服务器IP地址
官方说明 目前看不出来这个接口有哪些具体运用,但是既然有这个接口,那我们就试试能不能用 访问接口 修改WeCharBase.cs,新增以下2个方法 public static string Serve ...
- 微信公众号红包接口开发PHP开发 CA证书出错,请登陆微信支付商户平台下载证书
微信红包接口调试过程中一直提示“CA证书出错,请登陆微信支付商户平台下载证书”,经反复调试,大致解决方法如下: 1.首先确保CA证书的路径是否正确,一定得是绝对路径,因为是PHP开发的,这里需要三个p ...
- 微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/a1786223749/article/ ...
- 微信公众号PHP简单开发流程
原文:微信公众号PHP简单开发流程 微信公众号开发分傻瓜模式和开发者模式两种,前者不要考虑调用某些接口,只要根据后台提示傻瓜式操作即可,适用于非专业开发人员. 开发模式当然就是懂程序开发的人员使用的. ...
- 第三方网站不能调用微信公众平台里的图片了 显示"此图片来自微信公众号平台未经允许不可引用"
下午ytkah在自己小博客搜索时看到有几篇文章图片显示不了,再访问一些网站时发现有些图片无法显示出来,显示"此图片来自微信公众号平台未经允许不可引用",如下图所示,这个应该是最近微 ...
- 用iframe嵌入了一个微信公众号平台文章的URL
JS: $.ajaxPrefilter( function (options) { if (options.crossDomain && jQuery.support.cors) { ...
- php 微信公众号+微商城开发 基于Thinkphp3.2框架开发
说明:本教程是自己自学+自己的理解+扩展(包括学习过程中遇到的一些问题) 参考教程:麦子学院--李忠益--http://www.maiziedu.com/u/70409/ 微盟: http://www ...
- 微信公众号H5-网页开发须知
网页授权 1. 公众号配置--授权回调域名(仅域名,不带https://)2. 配置的域名为全域名,该域名下的页面可以进行OAuth2.0鉴权3. scope 授权的[静默.非静默] a.(静默--无 ...
- 微信公众号平台Url Token EncodingAESKey 注意点
最近公司让我开发微信公众号平台扫码登录,同步用户信息于PC端,所做的过程当中遇到了一些坑,做完了就总结一下需要注意的点,如若大家开发过程中遇到同样的问题,可以借鉴! 第一:配置域名 作用:配置域名为了 ...
随机推荐
- ios 设置屏幕方向的两种方法
第一种:通过人为的办法改变view.transform的属性. 具体办法: view.transform一般是View的旋转,拉伸移动等属性,类似view.layer.transform,区别在于Vi ...
- 【转】Linux 上的最佳 C/C++ IDE
IDE介绍收藏篇: 个人linux下开发经验不多,一般也都使用shell远程连接使用命令行模式开发.如果自己在自己机器上开发还是有IDE要方便很多,看到这篇帖子就果断的转过来先收藏下,之前自己使用过E ...
- 一起学JUCE之HashMap
基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同.) ...
- 试水MongoDB
1)安装好后启动mongodb 服务 1_1) 建立data/db ,保证至少有3g大小的盘 1_2) 建立log 文件夹 1_3)配置文件 内容,指定数据存放位置.日志文件位置 dbpath ...
- php包管理工具最基本的一些问题
windows下的 1.先安装windows下的set-up程序 点击一步步的, cmd进入,输入composer能成功显示一幅图说明安装成功 2.在下载,https://getcomposer.or ...
- zend framework 1.10项目配置与经典hello world
准备工作 前置条件:PHP>=5.14,Apache开启mod_rewrite支持,开启php的pdo扩展. Zend Framework 要求 PHP版本不低于5.1.4,但强烈建议使用 5. ...
- UVa 10551 - Basic Remains
题目大意:关于大数的mod和进制转换,直接使用Java的BigInteger类,正在copy式学习中... import java.io.*; import java.util.*; import j ...
- APK的反编译
有秘密的地方就有见不得光的东西,我讨厌这些,所以对于某一个XX圈APP极其反感,感觉就像一个色情网站 一.ApkTool的使用 看了几个教程,自己下载的好像总是不完整,下载包解压后一个没有aapt.e ...
- 笔记整理——C语言-http
C语言 HTTP GZIP数据解压 - 大烧饼的实验室 - 博客园 - Google Chrome (2013/4/10 18:22:26) C语言 HTTP GZIP数据解压 这个代码在http ...
- Storm学习笔记六
1 Storm的通信机制 说明:1.worker与worker之间跨进程通信: 2.worker内部中各个executor间的通信,Task对象--->输入队列queue--->执行--- ...