.Net获取小程序用户UnionID
程序员文章站
2022-04-18 11:25:20
第一次写博客,写的不好多多海涵! 小程序获取UnionID的流程,用code去换取session_key,然后去解密小程序获取到的那串字符,目前小程序还没提供.net 解密案例,在这里贴出来,互相学习一下! 这里就不多说了,获取原理大家都懂得! 直接上代码 备注:以下代码只供参考,不考虑代码稳健性! ......
第一次写博客,写的不好多多海涵!
小程序获取UnionID的流程,用code去换取session_key,然后去解密小程序获取到的那串字符,目前小程序还没提供.net 解密案例,在这里贴出来,互相学习一下!
这里就不多说了,获取原理大家都懂得!
直接上代码
备注:以下代码只供参考,不考虑代码稳健性!!!!!!
1 public string GetMiniAppUserUnionID(string code, string userInfo, string iv) 2 { 5 Dictionary<string, string> parames = new Dictionary<string, string>(); 6 parames.Add("appid", ""); 7 parames.Add("secret", ""); 8 parames.Add("js_code", code); 9 parames.Add("grant_type", "authorization_code"); 10 string res = HttpWebResponseHelper.Get("https://api.weixin.qq.com/sns/jscode2session", parames); 12 var obj = Parse(res);
string unionid=""; 13 if (!res.Contains("errcode")) 14 { 15 userJson = AESDecrypt(userInfo, obj.session_key, iv); 16 var userobj = Parse(userJson); 17 unionid = userobj.unionId;
}
return unionid ;
19 }
AESDecrypt解密算法
1 /// <summary> 2 /// AES解密 3 /// </summary> 4 /// <param name="text"></param> 5 /// <param name="password"></param> 6 /// <param name="iv"></param> 7 /// <returns></returns> 8 public static string AESDecrypt(string text, string password, string iv) 9 { 10 RijndaelManaged rijndaelCipher = new RijndaelManaged(); 11 rijndaelCipher.Mode = CipherMode.CBC; 12 rijndaelCipher.Padding = PaddingMode.PKCS7; 13 14 byte[] encryptedData = Convert.FromBase64String(text); 15 byte[] pwdBytes = Convert.FromBase64String(password); 16 17 rijndaelCipher.Key = pwdBytes; 18 19 if (!string.IsNullOrEmpty(iv)) 20 { 21 byte[] ivBytes = Convert.FromBase64String(iv); 22 rijndaelCipher.IV = ivBytes; 23 } 24 ICryptoTransform transform = rijndaelCipher.CreateDecryptor(); 25 byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length); 26 27 return Encoding.UTF8.GetString(plainText); 28 29 }
序列化方法
1 public static dynamic Parse(string json, Encoding encoding) 2 { 3 using (var reader = JsonReaderWriterFactory.CreateJsonReader(encoding.GetBytes(json), XmlDictionaryReaderQuotas.Max)) 4 { 5 return ToValue(XElement.Load(reader)); 6 } 7 }
打个广告: 晨风电影 https://www.chenfengdy.top/