码迷,mamicode.com
首页 > 微信 > 详细

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

时间:2016-07-08 15:26:08      阅读:529      评论:0      收藏:0      [点我收藏+]

标签:

 

步骤一:首先得开通公众号(目的是 获得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 本文到这里介绍 内容简单 给没接触或刚接触微信公众号开发的鲜肉看看 大神绕行  有问题请留言

 

技术分享

 

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

标签:

原文地址:http://www.cnblogs.com/xiaoming998/p/5653364.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!