步骤一:首先得开通公众号(目的是 获得appid、AppSecret、设置安全域名)~

【公众号设置】→【功能设置】 设置相应的域名

步骤二:编写帮助类WeixinLuyinHelper中的代码

#region 请求Url,不发送数据
/// <summary>
/// 请求Url,不发送数据
/// </summary>
public static string RequestUrl(string url)
{
return RequestUrl(url, "POST");
}
#endregion

#region 请求Url,不发送数据
/// <summary>
/// 请求Url,不发送数据
/// </summary>
public static string RequestUrl(string url, string method)
{
// 设置参数
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = method;
request.ContentType = "text/html";
request.Headers.Add("charset", "utf-8");

//发送请求并获取相应回应数据
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求
Stream responseStream = response.GetResponseStream();
StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);
//返回结果网页(html)代码
string content = sr.ReadToEnd();
return content;
}
#endregion

#region 获取Json字符串某节点的值
/// <summary>
/// 获取Json字符串某节点的值
/// </summary>
public static string GetJsonValue(string jsonStr, string key)
{
string result = string.Empty;
if (!string.IsNullOrEmpty(jsonStr))
{
key = "\"" + key.Trim('"') + "\"";
int index = jsonStr.IndexOf(key) + key.Length + 1;
if (index > key.Length + 1)
{
//先截逗号,若是最后一个,截“}”号,取最小值
int end = jsonStr.IndexOf(',', index);
if (end == -1)
{
end = jsonStr.IndexOf('}', index);
}

result = jsonStr.Substring(index, end - index);
result = result.Trim(new char[] { '"', ' ', '\'' }); //过滤引号或空格
}
}
return result;
}
#endregion

#region获取access_token
/// <summary>
/// 获取Token
/// </summary>
public static string GetToken(string appid, string secret)
{
string strJson = RequestUrl(string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret));
return GetJsonValue(strJson, "access_token");
}
#endregion

#region 获取jsapi_ticket
/// <summary>
/// 获取Token
/// </summary>
public static string Getjsapi_ticketToken(string access_token)
{
string strJson = RequestUrl(string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", access_token));
return GetJsonValue(strJson, "ticket");
}
#endregion

#region 生成签名
public static SignatureModel GetSignature(string jsapi_ticket)
{
var timestamp = GetTimeStamp();
var noncestr = new Random().Next(10000).ToString();
var uri = "http://m.wanwushuo.com/Home/WeixinLuyin";
string oldstr = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + uri;

byte[] cleanBytes = Encoding.UTF8.GetBytes(oldstr);
byte[] hashedBytes = System.Security.Cryptography.SHA1.Create().ComputeHash(cleanBytes);

string newstr= BitConverter.ToString(hashedBytes).Replace("-", "");
SignatureModel SignatureModel = new SignatureModel();
SignatureModel.noncestr=noncestr;
SignatureModel.Signature=newstr;
SignatureModel.timestamp=timestamp;
return SignatureModel;

}

#endregion

步骤三:调用上面方法即可(根据第一步上面获得的appid、AppSecret  获取access_token、jsapi_ticket 生成Signature签名)

string AppID = "999999999";
string AppSecret = "8888888888";

获取access_token 
string access_token = WeixinLuyinHelper.GetToken(AppID, AppSecret);//

获取jsapi_ticket

string jsapi_ticket = WeixinLuyinHelper.Getjsapi_ticketToken(access_token);

生成Signature签名
SignatureModel SignatureModel = WeixinLuyinHelper.GetSignature(jsapi_ticket);

应用:接下来就比较简单了 拿到签名Signature 可用于微信分享、语音识别、微信扫一扫、摇一摇等 

下面以微信分享为例:

页面

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>WeixinLuyin</title>
</head>
<body>
<div>

</div>

<script src="~/Scripts/jquery.js"></script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">

//配置config appid signature等刚才已经获得了 传到这边即可

wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: "@Model.AppID", // 必填,公众号的唯一标识
timestamp:"@Model.timestamp" , // 必填,生成签名的时间戳
nonceStr: "@Model.noncestr", // 必填,生成签名的随机串
signature: "@Model.Signature",// 必填,签名,见附录1
jsApiList: ["onMenuShareTimeline"] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2(此处填写了分享的接口)
});

wx.ready(function () {

//在这里调用分享接口

wx.onMenuShareTimeline({

title: '', // 分享标题

link: '', // 分享链接

imgUrl: '', // 分享图标

success: function () {

// 用户确认分享后执行的回调函数

},

cancel: function () {

// 用户取消分享后执行的回调函数

}

});

});

</script>
</body>
</html>

OVER 本文到这里介绍 内容简单 给没接触或刚接触微信公众号开发的鲜肉看看 大神绕行  有问题请留言

转载于:https://www.cnblogs.com/xiaoming998/p/5653364.html

【微信公众号开发】获取并保存access_token、jsapi_ticket票据(可用于微信分享、语音识别等等)...相关推荐

  1. 微信公众号开发--获取当前用户位置,并把经度纬度转化成省市县

    这里主要写的是获取当前用户的地理位置,调用微信接口,成功之后会返回经纬度,这里我们把它转化成了省市县方便调用 主逻辑函数 // 这个要在<head>里面引入 <script src= ...

  2. 微信公众号开发系列-13、基于RDIFramework.NET框架整合微信开发应用效果展示

    微信公众号开发系列-13.基于RDIFramework.NET框架整合微信开发应用效果展示 1.前言 通过前面一系列文章的学习,我们对微信公众号开发已经有了一个比较深入和全面的了解. 微信公众号开发为 ...

  3. 5 微信公众号开发 获取 access_token

    在使用微信公众号接口中,需要access_token.access_token是公众号的全局唯一凭证.可以理解为我们服务器的身份证. 总结以上说明,access_token需要做到以下两点: 1.因为 ...

  4. 微信公众号开发获取openID以及用户详细信息,超详细步骤,亲测开发

    好久没有发过博文了,恰好这两天做了一个关于微信公众号开发的东东,拿出来和大家分享一下. 需要做一套微信签到.抽奖系统,我要在后台存储微信用户的相关信息,openIDNickname之类的信息.在开发前 ...

  5. 微信公众号开发获取微信用户openid及访问url身份认证方式

    技术要点: 1.如何获取业务系统中用户身份标识. OPENID是微信公众号中用户的唯一标识,通过OPENID与业务系统中USRID建立一对一的对应关系,这样获取到了OPENID也就能知道所对应的USR ...

  6. 微信公众号开发:获取access_tokentoken失败,40164错误

    微信公众号报错: "errcode":40164,"errmsg":"invalid ip xx.xx.xx.xx, not in whitelist ...

  7. 微信公众号开发获取access_token 错误error:40164

    服务的IP没有添加白名单 需要有开发权限 管理员权限 开发>基本配置>白名单>查看  IP白名单 多个IP用回车分隔

  8. 微信公众号开发--获取用户信息中文乱码的解决方案

    在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq.com/cgi-bin/user/info?access_tok ...

  9. 微信公众号开发——获取AccessToken接口调用凭据

  10. 微信公众号开发第六课 BAE结合实现迅雷账号随机分享

    迅雷离线是个好东西,那么我们能不能实现这样一个功能,回复迅雷,随机返回一个迅雷账户和密码. 首先在t_type类型表中添加 迅雷以及对应用值xunlei,这样返回的case值中对应值xunlei. 建 ...

最新文章

  1. php当前日期的时间戳,php – 获取当前的ISO8601日期/时间戳
  2. RabbitMQ入门之安装配置与简单实例
  3. shell脚本——字符串 数组
  4. openmp并行编程_转载:多线程编程方法3OpenMPI框架
  5. 学习Python的利器:内置函数dir()和help()
  6. SIFT: Distinctive Image Features from Scale-Invariant Keypoints
  7. Codeforces 241B Friends 字典树
  8. 机器学习笔记(十):梯度下降 | 凌云时刻
  9. 网络技术——网络安全技术
  10. 信度spss怎么做_SPSS进行问卷量表信度检验(详细操作过程及结果分析)
  11. Shiro教程及案例
  12. Android中免root的hook框架Legend原理解析
  13. vue组件eleme 时间选择器问题
  14. 优秀课程案例:使用Scratch制作打弹球游戏3-过关增强版
  15. pytorch实现GAN
  16. Android脑图--Android动画
  17. Scratch案例-冒泡排序
  18. html emsp ensp nbsp; thinsp;空格到底怎么占用像素的
  19. 一、了解Scrapy
  20. MacOS 安装 Android Debug Bridge (ADB)

热门文章

  1. Spring Boot 中实现跨域的 5 种方式,你一定要知道!
  2. MyBatis 的工作原理,你了解过吗?
  3. 风控特征—关系网络特征工程入门实践
  4. 清华「暗黑破坏神」夺超算世界冠军,暨南大学首次参赛就跻身前三 | ISC21
  5. 中国程序员开发的远程桌面火了!Mac 可用,只有 9MB,支持自建中继器
  6. 程序员:我只想买件没有格子的衬衫,怎么就这么难?
  7. 18岁辍学,22岁进谷歌和Jeff Dean谈笑风生,这样的我究竟需不需要本科文凭?
  8. 写代码做副业月入10K+的方法都藏在这几个公众号
  9. 最新离婚大数据曝光:所有的分手,都是蓄谋已久
  10. 【每日一算法】最大子序列和