微信公众号开发基本配置
先进入微信公众平台进行公众号申请,也可以用测试号,测试号地址为:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login。
在接口配置信息里写下Toten认证的代码:如下:
/// <summary>
/// 验证服务器Token
/// </summary>
public void AuthenticationServer()
{
Response.ContentType = "text/plain";
string token = "heilouword1234";
if (string.IsNullOrEmpty(token))
{
return;
}
string echoString = Request.QueryString["echoStr"];
string signature = Request.QueryString["signature"];
string timestamp = Request.QueryString["timestamp"];
string nonce = Request.QueryString["nonce"];
if (CheckSignature(token, signature, timestamp, nonce))
{
if (!string.IsNullOrEmpty(echoString))
{
Response.Write(echoString);
Response.End();
}
}
}
/// <summary>
/// 签名验证
/// </summary>
/// <param name="token">token</param>
/// <param name="signature"></param>
/// <param name="timestamp"></param>
/// <param name="nonce"></param>
/// <returns></returns>
public static bool CheckSignature(string token, string signature, string timestamp, string nonce)
{
string[] ArrTmp = { token, timestamp, nonce };
//字典排序
Array.Sort(ArrTmp);
//拼接
string tmpStr = string.Join("", ArrTmp);
//sha1验证
tmpStr = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
//tmpStr = Membership.CreateUser(tmpStr, "SHA1");
tmpStr = tmpStr.ToLower();
if (tmpStr == signature)
return true;
else
return false;
}
获取基础的Access_token
/// <summary>
/// 获取Access_token
/// </summary>
/// <param name="appid"></param>
/// <param name="secret"></param>
/// <returns></returns>
public string Get_Access_token(string appid, string secret)
{
string Url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, secret);
string content = "";
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(Url);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
content = reader.ReadToEnd();//在这里对Access_token 赋值
}
return content;
}