【原】开发微信小程序中获取unionId失败——附Golang与PHP示例

前言:话说这个在微信小程序获取union_id真是一个大坑,前来记录一下,避免更多人的入坑;同时提供一段可运行的Golang语言的解密代码(官方提供的代码只有C++、NodeJS、PHP、Python – -)。

前期准备:去腾讯开放平台(open.weixin.qq.com)把相关应用绑定在一起,同时需要进行微信认证(300人民币/年)。

坑一:

小程序开发文档误导,如下图:

通过这种途径是无法获取到unionid的。(我的环境是:一个网页应用,一个小程序,已认证通过,已绑定在同一个主体下。通过调试是无法获取unionid。)

坑二:

如图,通过wx.login是无法获取到union_id的。


那么“正确”的做法是什么呢?请按照如下操作:

1、当通过wx.login获取到code后,发送到后台服务器,此时后台服务器通过请求地址“https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code”得到openid以及session_key。

2、在小程序端调用如下接口:

wx.getUserInfo({
withCredentials: true,
success: function (res){
console.log(res)
}})
在变量res中,会包括“encryptedData”,“iv”变量的值(当然也会包括“userInfo”,“signature”等值,那些不在本文讨论范围之内)。
3、将“encryptedData”,“iv”的值发送到后台服务器,此时后台服务器相当于得到这个用户的“session_key”,“encryptedData”,“iv”这三个值(Base64 编码)。
4、进行对称解密,得到unionId等值。参照如图:

继续阅读【原】开发微信小程序中获取unionId失败——附Golang与PHP示例

【原】关于macOS无法读写移动硬盘的解决方案

前言:

之前帮小伙伴处理NTFS格式的硬盘时发现,只能读取无法写入,令人很是烦恼。借助着NTFS FOR MAC这款软件,发现还需要收费,费用对于学生来说,也是一笔不小的开支啊啊啊。后来查阅资料发现,MAC之前是支持的NTFS写入的,据说是因为微软的原因导致屏蔽掉了。反正是基于Unix内核开发的系统,那直接用Linux命令挂载试试呗。(ps:以下方案在 macOS Sierra 10.12.6测试通过。)

步骤:

1、插上硬盘后,先看下系统识别的块设备文件是什么。即打开系统的“终端”,随后执行命令:

$ df -h

如图:

/dev/disk2s1就是我硬盘的块设备文件,大小,已经使用了多少,默认给我挂载到/Volumes/Untitled目录下

2、解除现有挂载,否则会报错提示繁忙。

$ sudo umount /dev/disk2s1

3、前往桌面建立一个目录,当做挂载点:

$ cd ~/Desktop/ && mkdir myDisk

4、执行挂载即可正常读取访问:

$ sudo mount -t ntfs -o rw,auto,nobrowse /dev/disk2s1 ~/Desktop/myDisk


此时,就可以双击点击桌面上的myDisk目录进行读写访问移动硬盘了。

注意:

1、“sudo”命令前缀执行后,会提示输入密码,此时的密码是你用户的密码,输入过程中不会出现输入状态(类似卡主的样子),没有关系,直接正确输入后回车即可。

2、用完后,为了数据完整性,推荐参照步骤2,再执行以下umount命令或者右键尝试“推出”。

3、“终端”的位置在:Launchpad->其他->终端。

4、以上步骤会在桌面生成一个myDisk的目录,挂载成功后,双击进入会进入到你的硬盘;挂载失败或者非挂载硬盘时间,双击进入会显示为空。查看自己是否挂载成功,请参照步骤1。