当前位置:   article > 正文

PHP使用EsayWeChat进行微信网页或小程序授权登录_easywechat 小程序登录

easywechat 小程序登录

详情请查看EasyWeChat手册
首先下载SDK(这里是使用composer下载的4.0)

composer require overtrue/wechat:~4.0 -vvv
  • 1

你还可以去文档中查看在框架中使用这一章节,就是一些拓展,其实就是下载一个配置文件,这一步不是必要的,但这样显得规范一点。

一般的操作是前端传code,后台拿code去请求用户信息

微信公众号登录

/**
     * @param $code
     * @return \think\response\Json
     * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
     * 微信用户授权登录
     */
    public function userAuth($code)
    {
        $config = [
            //用户授权配置
            'app_id' => 'appID',
            'secret' => '秘钥',
            // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
            'response_type' => 'array',
        ];//如果下载了拓展包这里就不用配置了

        $app = Factory::officialAccount($config);

        $token = $app->oauth->getAccessToken($code);//获取token
        $user = $app->user->get($token['openid']);//获取用户信息

//这里就已经获取到用户信息了,以下是个人操作,可根据自己的业务进行操作。

        $data['username'] = $user['openid'];
        if (!(empty($user['nickname']))) {
            $data['nickname'] = $user['nickname'];
        } else {
            $data['nickname'] = '忆念'.str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
        }
        //
        if (!empty($user['sex'])) {
            $data['sex'] = $user['sex'];
        } else {
            $data['sex'] = 1;
        }
        //
        if (!empty($user['headingurl'])) {
            $data['avatar'] = $user['headingurl'];
        } else {
            $data['avatar'] = 'uploads/images/20210325\9cc6af08604995ca6cc193267a2bca1.jpg';
        }

        //查看是否为新用户
        if (!(AuthModel::where('username', '=', $user['openid'])->find())) {
            AuthModel::create($data);
        }


        //生成token
        $key = "token";
        $token = [
            "iat" => time(),//签发时间
            "exp" => time()+3600*24*7,//token过期时间
            "username" => $data['username']
        ];
        $jwt =JWT::encode($token, $key, 'HS256');//生成参数

        return success([
            'token' => $jwt,
        ]);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

小程序登录

/**
     * @param $code
     * @return \think\response\Json
     * @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
     * 微信用户授权登录
     */
    public function userAuth()
    {

		//下面的参数都是前端传过来的
        $code = $this->request->param('code');//前端传过来的code
        $nickname = $this->request->param('nickname');
        $avatar = $this->request->param('avatar');
        $iv = $this->request->param('iv');
        $encryptedData = $this->request->param('encryptedData');

        $config = [
            //用户授权配置
            'app_id' => 'appID',
            'secret' => '秘钥',
            // 指定 API 调用返回结果的类型:array(default)/collection/object/raw/自定义类名
            'response_type' => 'array',
        ];

        $app = Factory::miniProgram($config);

        $user = $app->auth->session($code);//获取openID

        $decryptedData = $app->encryptor->decryptData($user['session_key'], $iv, $encryptedData);//解密电话

//以下是个人操作,可根据自己的业务逻辑进行操作
        
        $data = [
            'openid' => $user['openid'],
            'nickname' => $nickname,
            'avatar' => $avatar,
            'phone' => $decryptedData['phoneNumber']
        ];

        //查看是否为新用户
        if (!(UserModel::where('openid', '=', $user['openid'])->find())) {
            UserModel::create($data);
        }


        //生成token
        $key = "token";
        $token = [
            "iat" => time(),//签发时间
            "exp" => time()+3600*24*7,//token过期时间
            "openid" => $data['openid']
        ];
        $jwt =JWT::encode($token, $key, 'HS256');//生成参数

        return success([
            'token' => $jwt,
        ]);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

(做的笔记,自己看的)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/131958
推荐阅读
  

闽ICP备14008679号