第一次写博客,写的不好多多海涵!

小程序获取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的更多相关文章

  1. .Net之微信小程序获取用户UnionID

    前言: 在实际项目开发中我们经常会遇到账号统一的问题,如何在不同端或者是不同的登录方式下保证同一个会员或者用户账号唯一(便于用户信息的管理).这段时间就有一个这样的需求,之前有个客户做了一个微信小程序 ...

  2. 微信小程序——获取用户unionId

    1.获取code 2.获取openid 3.获取access_token 4.获取unionid

  3. [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息

    因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...

  4. 微信小程序 获取用户信息并保存登录状态

    微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml

  5. Laravel wxxcx 微信小程序获取用户信息

    wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ...

  6. 微信小程序获取用户手机号

    获取微信用户绑定的手机号,需先调用wx.login接口. 小程序获取code. 后台得到session_key,openid. 组件触发getPhoneNumber 因为需要用户主动触发才能发起获取手 ...

  7. 微信小程序 获取用户openid

    1,可以在小程序app.js入口文件中放入登录代码 wx.login({ success: res => { // 登录注册接口 if (res.code) { // 调用服务端登录接口,发送 ...

  8. 微信小程序获取用户信息

    App({ appData: { userInfo:{ user_portraitUrl: "", user_nick: "", user_gender: 0, ...

  9. 微信小程序 获取用户信息 encryptData解密 C#版本

    最近学习小程序开发,需要对encryptData解密,获取用户信息,官方源码没有C#版本,网上的资料比较杂,有的使用还有问题,下面贴一下自己亲试可以使用的一个源码 1.code 换取 session_ ...

随机推荐

  1. Poj2749:Building roads

    题意 有 N 个牛栏,现在通过一条通道(s1,s2)要么连到s1,要么连到s2,把他们连起来,他们之间有一些约束关系,一些牛栏不能连在同一个点,一些牛栏必须连在同一个点,现在问有没有可能把他们都连好, ...

  2. C#中DateTime的缺陷与代替品DateTimeOffset

    C#中的DateTime在逻辑上有个非常严重的缺陷: > var d = DateTime.Now; > var d2 = d.ToUniversalTime(); > d == d ...

  3. hibernate 反向生成 实体类

    1,配置数据库连接 步骤. 点击    windows   -> open perspective  - >   myeclipse datebase  Exprorer 打开了dateb ...

  4. 关于input 的选中,自定义input[type="checkbox"]样式

    1.css 呈现   选中后 的input的样式可以用 /*背景图*/      background:url('../pc/images/archives/icon_choosed.png') no ...

  5. Java项目中环境变量的问题

    刚入职程序员的小朋友,第一次往eclipse导入项目总会出现这样那样的错误. 总结了几种查看和处理的方法: 1.打开project-->clean.然后build.目的将工程中的.class文件 ...

  6. Hadoop之Secondary NameNode

    NameNode存储文件系统的变化作为log追加在本地的一个文件里:这个文件是edits.当一个NameNode启动时,它从一个映像文件:FsImage,读取HDFS的状态,使用来自edits日志文件 ...

  7. WordPress怎么给分类目录排序

    WordPress默认的分类目录是按照字母的顺序排序的, 我们可以安装一款插件Category Order就可以自定义分类目录的顺序了,这款插件很小,安装后即可在后台的左侧菜单中看见Category ...

  8. 设计模式——观察者模式(C++实现)

    #include <iostream> #include <vector> #include <algorithm> #include <iterator&g ...

  9. 筛法求素数Java

    输出:一个集合S,表示1~n以内所有的素数 import java.util.Scanner; public class 筛法求素数 { public static void main(String[ ...

  10. python笔记之函数

    函数 >>> def funTest(param1): ... 'this is function document string.' #正文需要有缩进 ... return par ...