用来解密$encryptData,如果你需要在后端获取userinfo的话。
当然如果你打算从前端丢userinfo到后端或者根本不需要userinfo只是需要openid的话,应该是没有什么用的
public static function login($code, $encryptData, $iv) {
// 1. 获取 session key
$sessionKey = self::getSessionKey($code);
// 2. 生成 3rd key (skey)
$skey = sha1($sessionKey . mt_rand());
/**
* 3. 解密数据
* 由于官方的解密方法不兼容 PHP 7.1+ 的版本
* 这里弃用微信官方的解密方法
* 采用推荐的 openssl_decrypt 方法(支持 >= 5.3.0 的 PHP)
* @see http://php.net/manual/zh/function.openssl-decrypt.php
*/
$decryptData = \openssl_decrypt(
base64_decode($encryptData),
'AES-128-CBC',
base64_decode($sessionKey),
OPENSSL_RAW_DATA,
base64_decode($iv)
);
$userinfo = json_decode($decryptData);
// 4. 储存到数据库中
User::storeUserInfo($userinfo, $skey, $sessionKey);
return [
'loginState' => Constants::S_AUTH,
'userinfo' => compact('userinfo', 'skey')
];
}