PHP后台微信小程序登录

官方文档微信小程序登录

  1. 授权登录
<button open-type="getUserInfo" @getuserinfo="GetUserInfo">授权登录</button>
GetUserInfo() {
	uni.getUserInfo({
		provider: 'weixin',
		success: function(infoRes) {
			that.tologin() ;
		},
		fail(res) {
			console.log("用户在register页面取消授权") ;
		}
	});
}
  1. 发送请求给后台
// 登录
tologin(){
	var that = this ;
	this.$api.loading('登录中...');
	uni.login({
		provider: 'weixin',
		success:function(res){
			var code = res.code ; 
			uni.getUserInfo({
				success(res) {
					uni.request({
						url:url,
						method:"POST",
						data:{
							code : code ,
							encryptedData:res.encryptedData ,
							iv : res.iv 
						},
						success:function(res){
							console.log(res);						
						}
					})
				}
			})
		}
	})
},
  1. php后台
class User
{
    public function getSess(Request $request)
    {
        $data          = $request->param();
        $code          = $data['code'];
        $iv            = $data['iv'];
        $encryptedData = $data['encryptedData'];

        $appid  = config('xcx.APPID');
        $secret = config('xcx.SECRET');
        $url    = "https://api.weixin.qq.com/sns/jscode2session?appid=" . $appid . "&secret=" . $secret . "&js_code=" . $code . "&grant_type=authorization_code";

        //利用code得到session_key 和 openid
        $res = json_decode(file_get_contents($url),true);
        $session_key = $res['session_key'];

        //利用session_key解密用户数据
        $ret = $this->decryUser($appid,$session_key ,$encryptedData ,$iv) ;
        $ret = json_decode($ret,true) ;

        //第三方session 自己设置规则
        $three_session = md5($ret['openId'].$res['session_key']) ;

        //要保存到数据库中的用户数据
        $data = [
            
        ];

        $user_id = UserModel::where("open_id",$ret['openId'])->value('user_id');
        // 如果已经存入过数据库 就更新数据库
        if($user_id){
            $updateRes = UserModel::where("user_id",$user_id)->update($data);
			//判断updateRes是否成功然后设置返回状态
            $return = ['msgcode'=>1,'three_session'=>$three_session] ;
        }else {
            //没有就保存数据库
            $saveRes = UserModel::create($data) ;
            //判断saveRes是否成功然后设置返回状态
            $return = ['msgcode'=>1,'three_session'=>$three_session] ;
        }

        return self::jsonReturn($return) ;
    }

    // 解密
    private function decryUser($appid ,$sessionKey ,$encryptedData ,$iv)
    {
        import('wxBizDataCrypt',EXTEND_PATH) ;
        $pc = new \WXBizDataCrypt($appid, $sessionKey);
        $errCode = $pc->decryptData($encryptedData, $iv, $data );
        return $data ;
    }
}
  1. 官方解密算法:用户信息解密
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值