微信公众号平台接口开发:基础支持,获取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端,所做的过程当中遇到了一些坑,做完了就总结一下需要注意的点,如若大家开发过程中遇到同样的问题,可以借鉴! 第一:配置域名 作用:配置域名为了 ...
随机推荐
- 推荐几个web中常用js图表插件
作者:zccst 我自己用过fusioncharts和highchart. jQuery插件有: TufteGraph flot js charts jqchart elycharts jquery ...
- matlab unique 顺序不变
对于一个向量,使用unique去重后会自动排序,为了保持原顺序: A = [5,1,8,5,2,8,3,9,6,1];[i,j] = unique(A,'first');B = A(sort(j)); ...
- cygwin的安装,vi的使用,gcc,g++的使用(转)
源:cygwin的安装,vi的使用,gcc,g++的使用 Gcc的Makefile简单使用
- IAR for STM8 错误
一个IAR for STM8 v1.3 的工程,换到1.4版后出现如下错误 unable to allocate space for sections/blocks with a total esti ...
- adapter中报错:Can't create handler inside thread that has not called Looper.prepare()
http://stackoverflow.com/questions/9357513/cant-create-handler-inside-thread-that-has-not-called-loo ...
- jquery ajax promise
$request = $.getJSON('test.php'); $request.done(process1); $request.done(process2); $request.always( ...
- 自定义浏览器滚动条的样式,打造属于你的滚动条风格——兼容IE和webkit(ff不支持)
前段时间,到网上找素材时,看到了一个很个性的滚动条式,打开Chrome的调试工具看了一下,发现不是用JavaScript来模拟实现的,觉得 有必要折腾一下.于是在各大浏览器中对比了一下,发现只用Chr ...
- Alamofire 4.0 迁移指南
Alamofire 4.0 是 Alamofire 最新的一个大版本更新, 一个基于 Swift 的 iOS, tvOS, macOS, watchOS 的 HTTP 网络库. 作为一个大版本更新, ...
- 获取CPU系列号,硬盘系
unit Secrity; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- Linux释放内存脚本
vi recover_mem.sh #!/bin/bash ################## #author:rrhelei@126.com# ################## #系统分配的 ...