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

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

composer require overtrue/wechat:~4.0 -vvv

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

一般的操作是前端传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,
        ]);
    }

小程序登录

/**
     * @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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
微信小程序登录微信网页授权登录有以下区别: 1. 授权方式不同:微信小程序登录使用的是小程序端的 getPhoneNumber 接口进行授权,而微信网页授权登录使用的是网页端的 OAuth2.0 授权流程。 2. 获取手机号的方式不同:在微信小程序登录中,用户点击"允许"获取手机号的回调后,小程序端通过请求服务端的接口,将参数上传给服务端,服务端使用这些参数去获取 access_token,然后调用 getPhoneNumber 接口获取手机号并返回给小程序端。而在微信网页授权登录中,用户在网页授权后,网页端直接获取用户的基本信息,包括手机号。 3. 参数传递方式不同:在微信小程序登录中,小程序端需要将 appid 和 secret 通过接口上传给服务端,服务端使用这些参数去获取 access_token。而在微信网页授权登录中,网页端直接使用自己的 appid 和 secret 进行授权。 总结来说,微信小程序登录微信网页授权登录的区别在于授权方式、获取手机号的方式和参数传递方式的不同。 #### 引用[.reference_title] - *1* *2* *3* [微信小程序手机号授权登录](https://blog.csdn.net/Morris_/article/details/131238942)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值