.net 小程序获取用户UnionID
第一次写博客,写的不好多多海涵!
小程序获取UnionID的流程,用code去换取session_key,然后去解密小程序获取到的那串字符,目前小程序还没提供.net 解密案例,在这里贴出来,互相学习一下!
这里就不多说了,获取原理大家都懂得!
直接上代码
备注:以下代码只供参考,不考虑代码稳健性!!!!!!
public string GetMiniAppUserUnionID(string code, string userInfo, string iv)
{
Dictionary<string, string> parames = new Dictionary<string, string>();
parames.Add("appid", "");
parames.Add("secret", "");
parames.Add("js_code", code);
parames.Add("grant_type", "authorization_code");
string res = HttpWebResponseHelper.Get("https://api.weixin.qq.com/sns/jscode2session", parames);
var obj = Parse(res);
string unionid="";
if (!res.Contains("errcode"))
{
userJson = AESDecrypt(userInfo, obj.session_key, iv);
var userobj = Parse(userJson);
unionid = userobj.unionId;
}
return unionid ;
}
AESDecrypt解密算法
/// <summary>
/// AES解密
/// </summary>
/// <param name="text"></param>
/// <param name="password"></param>
/// <param name="iv"></param>
/// <returns></returns>
public static string AESDecrypt(string text, string password, string iv)
{
RijndaelManaged rijndaelCipher = new RijndaelManaged();
rijndaelCipher.Mode = CipherMode.CBC;
rijndaelCipher.Padding = PaddingMode.PKCS7; byte[] encryptedData = Convert.FromBase64String(text);
byte[] pwdBytes = Convert.FromBase64String(password); rijndaelCipher.Key = pwdBytes; if (!string.IsNullOrEmpty(iv))
{
byte[] ivBytes = Convert.FromBase64String(iv);
rijndaelCipher.IV = ivBytes;
}
ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
byte[] plainText = transform.TransformFinalBlock(encryptedData, , encryptedData.Length); return Encoding.UTF8.GetString(plainText); }
序列化方法
public static dynamic Parse(string json, Encoding encoding)
{
using (var reader = JsonReaderWriterFactory.CreateJsonReader(encoding.GetBytes(json), XmlDictionaryReaderQuotas.Max))
{
return ToValue(XElement.Load(reader));
}
}
打个广告: 晨风电影 https://www.chenfengdy.top/
.net 小程序获取用户UnionID的更多相关文章
- .Net之微信小程序获取用户UnionID
前言: 在实际项目开发中我们经常会遇到账号统一的问题,如何在不同端或者是不同的登录方式下保证同一个会员或者用户账号唯一(便于用户信息的管理).这段时间就有一个这样的需求,之前有个客户做了一个微信小程序 ...
- 微信小程序——获取用户unionId
1.获取code 2.获取openid 3.获取access_token 4.获取unionid
- [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息
因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...
- 微信小程序 获取用户信息并保存登录状态
微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml
- Laravel wxxcx 微信小程序获取用户信息
wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...
- 微信小程序获取用户手机号
获取微信用户绑定的手机号,需先调用wx.login接口. 小程序获取code. 后台得到session_key,openid. 组件触发getPhoneNumber 因为需要用户主动触发才能发起获取手 ...
- 微信小程序 获取用户openid
1,可以在小程序app.js入口文件中放入登录代码 wx.login({ success: res => { // 登录注册接口 if (res.code) { // 调用服务端登录接口,发送 ...
- 微信小程序获取用户信息
App({ appData: { userInfo:{ user_portraitUrl: "", user_nick: "", user_gender: 0, ...
- 微信小程序 获取用户信息 encryptData解密 C#版本
最近学习小程序开发,需要对encryptData解密,获取用户信息,官方源码没有C#版本,网上的资料比较杂,有的使用还有问题,下面贴一下自己亲试可以使用的一个源码 1.code 换取 session_ ...
随机推荐
- java中获取项目在tomcat目录下的路径方法
HttpServletRequest request //获取的是ROOT项目在tomcat下的路径 方法1: String path = request.getSession().getServle ...
- c# redis 操作类库推荐:StackExchange.Redis.Extensions
StackExchange是一个优秀的c# redis客户端,但是存在操作略为繁琐的弊端,为了简化操作,使用 StackExchange.Redis.Extensions成为了一个非常值得推荐的选择. ...
- PORTE_ISFR & (1<<n)
位运算关键:空出补零,溢出舍弃
- python函数学习(一)
1.parse_known_args()和parse_args()函数 该函数为命令行解析函数,调用时需要import argparse(命令行选项.参数和子命令的解析器). 以下内容摘自python ...
- RouterPassView——路由器密码查看工具
大多数现代路由器都可以让您备份一个文件路由器的配置文件,然后在需要的时候从文件中恢复配置.路由器的备份文件通常包含了像您的ISP的用户名重要数据/密码,路由器的登录密码,无线网络的KEY. 如果你忘记 ...
- VLOOKUP函数常用套路大全
今天和大家来说说VLOOKUP的那些事儿,深入了解一下VLOOKUP函数的各种用法,看看这位大众情人还藏着多少不为人知的秘密.函数的语法为:VLOOKUP(要找谁,在哪儿找,返回第几列的内容,精确找还 ...
- Jquery EasyUI datagrid 的一些问题
在使用 Easy UI datagrid时 出现了一下小问题: table 中 有数据,但是 没有标题行名..在其他页面同样使用了datagrid 但是没有这样问题. 仔细检查了js代码,确认无误后 ...
- JS基础四
1.函数是一组可以随时随地运行的语句. 函数是 ECMAScript 的核心. 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 2.闭包,指的是 ...
- 实现Canvas2D绘图 使元素绕中心居中旋转
我之前用canvas写了个头像剪切的demo,但是关于让载入的图片旋转是个问题,虽然通过其它方法实现了,但是感觉并不太好,于是查了些资料,想试着重新做一下canvas的旋转. 在开始之前,先让我们来做 ...
- redis备份与恢复
1.redis的备份 redis需要远程访问 添加密码进行登录,修改主配置文件添加:requirepass xxx redis-cli -h 127.0.0.1 -p 6379 -a 123456 b ...