using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace CallCenter.Utility
{
public class WeiBoHelper
{
public static string CallBackUrl; //成功授权后的回调地址
public static string AppKey; //应用的APPID
public static string AppSercet; //应用的APPKEY
public static string AccessToken; //应用的access_token
///
/// 获取配置
///
public WeiBoHelper()
{
CallBackUrl = Configs.GetValue("WeiBoCallBackUrl");
AppKey = Configs.GetValue("WeiBoAppKey");
AppSercet = Configs.GetValue("WeiBoAppSecret");
AccessToken = Configs.GetValue("WeiBoAccessToken");
}
#region SHA1加密
///
/// SHA1加密 (HASH算法没有解密)
///
///
///
public static string SHA1_Encrypt(string Source_String)
{
byte[] StrRes = Encoding.Default.GetBytes(Source_String);
HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
StrRes = iSHA.ComputeHash(StrRes);
StringBuilder EnText = new StringBuilder();
foreach (byte iByte in StrRes)
{
EnText.AppendFormat("{0:x2}", iByte);
}
return EnText.ToString();
}
#endregion
///
/// 返回值是echostr的值
///
///
///
///
///
public static bool ValidateSHA(string signature, string nonce, string timestamp)
{
string App_Sercet = Configs.GetValue("WeiBoAppSecret");
//SHA1Encrypt sha1 = new SHA1Encrypt();
if (signature == null || nonce == null || timestamp == null)
{
return false;
}
string sign = SHA1_Encrypt(getSignContent(nonce, timestamp, App_Sercet));
if (!signature.Equals(sign))
{
return false;
}
return true;
}
///
/// 字典顺序升序构造签名串
///
///
///
///
///
public static string getSignContent(string nonce, string timestamp, string app_secret)
{
Dictionary dics = new Dictionary();
dics.Add("nonce", nonce);
dics.Add("timestamp", timestamp);
dics.Add("app_secret", app_secret);
var vDic = (from objDic in dics orderby objDic.Key descending select objDic);
StringBuilder str = new StringBuilder();
foreach (KeyValuePair kv in vDic)
{
string pvalue = kv.Value;
str.Append(pvalue + "");
}
string result = str.ToString();
return result;
}
}
}