联系官方销售客服

1835022288

028-61286886

应用插件 版主:官方插件技术组
小程序授权登入和微信小程序登入除了请求接口和不同外其他的都是
类型:迅睿CMS 更新时间:2021-01-03 17:15:13 微信 接口

QQ小程序授权登入和微信小程序登入除了请求接口和APPid不同外其他的都是一样的,我把微信小程序的API登入接口改成QQ的后就可以直接登入了,请问怎么在增加个登入接口,让微信小程序登入和QQ小程序同时能用

下面这个是我把微信的请求接口和改成QQ了

  // 小程序登录
    public function xcx() {

        if (IS_POST) {

            $json = json_decode($_POST['json'], true);
            if (!$json) {
                $this->_json(0, 'POST数据解析失败');
            } elseif (!$_POST['js_code']) {
                $this->_json(0, 'js_code数据获取失败');
            }

            $url = "https://api.q.qq.com/sns/jscode2session?appid=" . $this->weixin['xcx']['appid'] . "&secret=".$this->weixin['xcx']['appsecret']."&js_code=". $_POST['js_code']."&grant_type=authorization_code";
            $token = json_decode(dr_catcher_data($url), true);
            if (!$token) {
                $this->_json(0, 'jscode2session获取失败');
            } elseif (isset($token['errcode']) && $token['errcode']) {
                $this->_json(0, 'jscode2session错误代码('.$token['errcode'].'):'.$token['errmsg'].' appid='.$this->weixin['xcx']['appid'].'&secret='.$this->weixin['xcx']['appsecret'].'');
            } elseif (!$token['openid']) {
                $this->_json(0, 'jscode2session:openid获取失败');
            }

            $rt = \Phpcmf\Service::M('member')->insert_oauth(0, 'login', [
                'oid' => $token['openid'],
                'oauth' => 'wxxcx',
                'avatar' => $json['avatarUrl'],
                'unionid' => (string)$token['unionid'],
                'nickname' => dr_emoji2html($json['nickName']),
                'expire_at' => SYS_TIME,
                'access_token' => $token['session_key'],
                'refresh_token' => '',
            ]);
            if (!$rt['code']) {
                $this->_json(0, $rt['msg']);
            }

            $oauth = \Phpcmf\Service::M()->table('member_oauth')->get($rt['code']);
            if (!$oauth) {
                $this->_json(0, '服务端储存用户失败');
            } elseif ($oauth['uid']) {
                $rt = \Phpcmf\Service::M('member')->login_uid($oauth, $oauth['uid']);
                if (!$rt['code']) {
                    $this->_json(0, $rt['msg']);
                }
                $this->_json(1, 'login', $rt['data']);
            }

            if ($this->weixin['xcx']['login']) {
                // 直接登录
                $rt = \Phpcmf\Service::M('member')->register_oauth(0, $oauth);
                if ($rt['code']) {
                    // 登录成功
                    $this->_json(1, 'login', $rt['data']);
                } else {
                    $this->_json(0, $rt['msg']);
                }
            } else {
                // 提示注册
                $oauth['nickname'] = dr_html2emoji($oauth['nickname']);
                $this->_json(1, 'register', $oauth);
            }

        } else {
            $this->_json(0, '非POST提交');
        }

        exit;
    }

    // 小程序绑定账号
    public function xcx_bang() {

        if (IS_POST) {

            $oid = (int)\Phpcmf\Service::L('Input')->post('oid');
            $post = \Phpcmf\Service::L('Input')->post('data', true);
            if (!$post) {
                $this->_json(0, 'POST数据解析失败');
            } elseif (!$oid) {
                $this->_json(0, '小程序OpenId为空');
            }

            $oauth = \Phpcmf\Service::M()->table('member_oauth')->get($oid);
            if (!$oauth) {
                $this->_json(0, '服务端用户不存在');
            } elseif ($oauth['uid']) {
                $rt = \Phpcmf\Service::M('member')->login_uid($oauth, $oauth['uid']);
                if (!$rt['code']) {
                    $this->_json(0, $rt['msg']);
                }
                $this->_json(1, 'ok', $rt['data']);
            }

            // 登录绑定
            if (empty($post['username']) || empty($post['password'])) {
                $this->_json(0, dr_lang('账号或密码必须填写'));
            } else {
                $rt = \Phpcmf\Service::M('member')->login($post['username'], $post['password']);
                if ($rt['code']) {
                    // 登录成功
                    \Phpcmf\Service::M()->db->table('member_oauth')->where('id', $oid)->update(['uid' => $rt['data']['member']['id']]);
                    $this->_json(1, 'ok', $rt['data']);
                } else {
                    $this->_json(0, $rt['msg']);
                }
            }

        } else {
            $this->_json(0, '非POST提交');
        }
    }


    // 小程序注册账号
    public function xcx_reg() {

        if (IS_POST) {

            $oid = (int)\Phpcmf\Service::L('Input')->post('oid');
            $post = \Phpcmf\Service::L('Input')->post('data', true);
            if (!$post) {
                $this->_json(0, 'POST数据解析失败');
            } elseif (!$oid) {
                $this->_json(0, '小程序OpenId为空');
            }

            $oauth = \Phpcmf\Service::M()->table('member_oauth')->get($oid);
            if (!$oauth) {
                $this->_json(0, '服务端用户不存在');
            } elseif ($oauth['uid']) {
                $rt = \Phpcmf\Service::M('member')->login_uid($oauth, $oauth['uid']);
                if (!$rt['code']) {
                    $this->_json(0, $rt['msg']);
                }
                $this->_json(1, 'ok', $rt['data']);
            }

            // 注册

            if (empty($post['password'])) {
                $this->_json(0, dr_lang('密码必须填写'), ['field' => 'password']);
            } elseif ($post['password'] != $post['password2']) {
                $this->_json(0, dr_lang('确认密码不一致'), ['field' => 'password2']);
            } else {
                $rt = \Phpcmf\Service::M('member')->register_oauth_bang($oauth, 0, [
                    'username' => (string)$post['username'],
                    'phone' => (string)$post['phone'],
                    'email' => (string)$post['email'],
                    'password' => dr_safe_password($post['password']),
                    'name' => dr_safe_replace($post['name']),
                ]);
                if ($rt['code']) {
                    // 注册绑定成功
                    $this->_json(1, 'ok', $rt['data']);
                } else {
                    $this->_json(0, $rt['msg'], ['field' => $rt['data']['field']]);
                }
            }

        } else {
            $this->_json(0, '非POST提交');
        }
    }



插件版权:官方插件
插件名称:API
回帖
  • 官方插件技术-实习
    #1楼    官方插件技术-实习
    2021-01-03 15:18:57
    Chrome 0
    新建新建一个php文件就不会冲突了,比如以前叫Xx.php,你复制一个改成Bb.php
  • 华仔
    #2楼    华仔
    2021-01-03 15:21:24
    Chrome 0
    官方插件技术-实习 这个是微信插件里面的小程序配置文件呀!尝试直接在这个php里复制份一样的代码后是不行的
  • 官方插件技术-实习
    #3楼    官方插件技术-实习
    2021-01-03 15:25:16
    Chrome 0
    复制后,还需要修改文件里面的类名,访问时地址也要发生变化
  • 华仔
    #4楼    华仔
    2021-01-03 15:29:12
    Chrome 0
    官方插件技术-实习 这个账号设置页面也有增加一个,感觉好难,官方能不能加个QQ小程序的配置接口呀

  • 官方插件技术-实习
    #5楼    官方插件技术-实习
    2021-01-03 15:34:00
    Chrome 0
    目前微信插件没有这种功能,需要你自己二次开发
    满意答案
  • 华仔
    #6楼    华仔
    2021-01-03 17:15:13
    Chrome 0
    @官方插件技术-实习:可以了啦啦啦啦