小程序登录数据解密
发布时间:2020-12-14 19:17:23 所属栏目:资源 来源:网络整理
导读:小程序开发中,需要用户授权登陆并获取用户的数据,快速对接用户系统。 openId与unionid的区别 openId : 用户在当前小程序的唯一标识 unionId : 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只
小程序开发中,需要用户授权登陆并获取用户的数据,快速对接用户系统。 openId与unionid的区别 openId : 用户在当前小程序的唯一标识 unionId : 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionId是相同的。详情登录微信开放平台(open.weixin.qq.com) 。 GET https://api.weixin.qq.com/sns/jscode2session?appid=xx&secret=xx&js_code=xx&grant_type=authorization_code
属性类型默认值必填说明
appid string 是 小程序 appId
secret string 是 小程序 appSecret
js_code string 是 登录时获取的 code
grant_type string 是 授权类型,此处只需填写 authorization_code
Object
返回的 JSON 数据包
属性类型说明
openid string 用户唯一标识
session_key string 会话密钥
unionid string 用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回,详见 UnionID 机制说明。
errcode number 错误码
errmsg string 错误信息
解密类 class WxBizDataCrypt
{
private $appid;
private $sessionKey;
/**
* 构造函数
* @param $sessionKey string 用户在小程序登录后获取的会话密钥
* @param $appid string 小程序的appid
*/
public function __construct( $appid,$sessionKey)
{
$this->sessionKey = $sessionKey;
$this->appid = $appid;
}
/**
* 检验数据的真实性,并且获取解密后的明文.
* @param $encryptedData string 加密的用户数据
* @param $iv string 与用户数据一同返回的初始向量
* @param $data string 解密后的原文
*
* @return int 成功0,失败返回对应的错误码
*/
decryptData( $encryptedData,$iv,&$data )
{
if (strlen($this->sessionKey) != 24) {
return ErrorCode::$IllegalAesKey;
}
$aesKey=base64_decode($this->sessionKey);
if (strlen($iv) != return ErrorCode::$IllegalIv;
}
$aesIV=base64_decode($iv);
$aesCipher=base64_decode($encryptedData);
$result=openssl_decrypt( $aesCipher,"AES-128-CBC",$aesKey,1,$aesIV);
$dataObj=json_decode( $result );
if( $dataObj == NULL )
{
return ErrorCode::$IllegalBuffer;
}
if( $dataObj->watermark->appid != $this->appid )
{
return ErrorCode::$IllegalBuffer;
}
$data = $result;
return ErrorCode::$OK;
}
}
代码如下仅供参考 转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/25402.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 为什么我们不写int x = printf(“text”);因为printf()语句
- JavaScript数据可视化编程学习(一)Flotr2,包含简单的,柱
- html – 自动化(IE ComObject)填充文本框
- 微信小程序 修改原生组件 button样式
- html – 为什么Flex容器中的元素保持在同一行?
- html – 如何防止我的风格被覆盖在周围的div上的另一种风格
- haskell – 为什么文本utf-16而不是utf-8
- HTML锚定在Github上的Jupyter笔记本中
- 微信小程序onLaunch异步,首页onLoad先执行?
- redux-form V.7.4.2学习笔记(六)表单同步校验技术