微信小程序授权登录--PHP后端接口

微信小程序授权登录--PHP后端接口,第1张

微信小程序授权登录--PHP后端接口

由于之前做过公众号的一个开发,所以再开发小程序就没有那么多坑了,在这也记录一下开发过程,以方便后续进行参考。


废话不多说,直接上官方文档,任何使用第三方开发的,不看文档就是耍流氓。


小程序开发文档,可以看到需要传的参数为appid,secret,js_code,grant_type。


appid和secret是在小程序后台能够直接获取到的,而code是前端经过用户授权登录得到的一个code,grant_type就直接写authorization_code。


好了,接下来上代码,这里用的是TP5.1开发

public function wxDecode()
{
// 接收参数
$data = request()->param(); $appid = config('site.app_id');
$appsecret = config('site.app_secret');
$grant_type = "authorization_code"; //授权(必填)
$code = $data['code']; //有效期5分钟 登录会话
$encryptedData = $data['encryptedData'];
$iv = $data['iv'];
$signature = $data['signature'];
$rawData = $data['rawData']; // 拼接url
$url = "https://api.weixin.qq.com/sns/jscode2session?" . "appid=" . $appid . "&secret=" . $appsecret . "&js_code=" . $code . "&grant_type=" . $grant_type;
$res = json_decode(curl_get($url), true);
$sessionKey = $res['session_key']; //取出json里对应的值
$signature2 = sha1(htmlspecialchars_decode($rawData) . $sessionKey);
// 验证签名
if ($signature2 !== $signature) {
return json(['status'=>201,'msg'=>"验签失败"]);
} // 获取解密后的数据
$pc = new Decrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $date);
}

上面的$date便是解密之后的数据,是个json对象,因此后续 *** 作需要json_decode,转换成数组,继而进行自己的逻辑,比如插入数据库,返回给前端token等等。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/587915.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存