IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP微信公众号授权登录 -> 正文阅读

[PHP知识库]PHP微信公众号授权登录

PHP微信公众号授权登录

微信公众号授权登录非常简单只需要几步就可以搞定

第一步:拼接参数获取code值,并指定后面的处理链接

/**
     * 获取公众号code
     */
    public function getCode(){
        $appid = config('app.wechat.AppId');
        $redirect_uri = urlencode('http://www.xxx.com/api/register/weChatRegister');//重定向地址
        $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx6f8e4dba34f9d941&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";
        header("Location:" . $url);
    }

第二步:通过code获取用户openid和access_token,然后再根据openid和access_token获取用户信息

public function weChatRegister()
    {
        if (isset($_GET['code'])) {
            // 获取openid和access_token
            $app_id = config('app.wechat.AppId');
            $app_secret = config('app.wechat.AppSecret');
            $code = $_GET['code'];
            // 发送请求,获取用户openid和access_token
            $data = $this->curl('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $app_id . '&secret=' . $app_secret . '&code=' . $code . '&grant_type=authorization_code');
            $data = json_decode($data);
            // 防止第二次访问动态链接报错
            // 判断是否获取到当前用户的openid
            if (isset($data->openid)) {
                $open_id = $data->openid;
                $access_token = $data->access_token;
                // 获取当前用户信息
                $user_info = $this->curl('https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $open_id . '&lang=zh_CN');
                $user_info = json_decode($user_info);
                // 取出用户信息
                /*
                *user_openid :用户openId
                *user_nickname :用户昵称
                *user_sex :性别
                *user_province :省
                *user_city :城市
                *user_headimgurl :用户头像url
                *user_unionid :绑定开放平台后才有这个字段
                */
                $user_openid = $user_info->openid;
                $user_nickname = $user_info->nickname;
                $user_headimgurl = $user_info->headimgurl;
                $user_unionid = $user_info->unionid;
                // 判断用户是否存在
                $userInfo = Users::where(['unionid' => $user_unionid])->find();
                if (empty($userInfo)) {
                	//用户不存在,创建用户
                    $insert['nickname'] = $user_nickname;
                    $insert['avatar'] = $user_headimgurl;
                    $insert['openid'] = $user_openid;
                    $insert['unionid'] = $user_unionid;
                    $insert['create_time'] = time();
                    $userId = Db::name('qt_users')->insertGetId($insert);
                    
                }else {
                    //用户已经存在进行登录操作或者进行用户下一步数据绑定和认证等
                    
                }
            }else{
                $this->result('无效的请求',$data,204);
            }
        }else{
            $this->result('无效的请求','',204);
        }

    }

curl请求方法

// php CURL请求
    public function curl($url, $post = false)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if ($post) {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        }
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 11:53:54  更:2021-08-26 11:54:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:08:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码