PHP建站技术分享-从入门到精通_各类知识收集PHP建站技术分享-从入门到精通_各类知识收集PHP建站技术分享-从入门到精通_各类知识收集

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

第三方登录扩展微信小程序模块

管理员 2024-12-14
Fastadmin
65

第一步:执行安装第三方登录插件
第二步:执行sql 加入 wechatmini

ALTER TABLE `fa_third` MODIFY COLUMN `platform`  enum('wechatmini','qq','wechat','weibo') NOT NULL COMMENT '第三方应用'

第三步:找到目录addonsthird
修改config.php文件 加入下面配置信息

3 =>   array (    'name' => 'wechatmini',    'title' => '微信小程序',    'type' => 'array',    'content' =>     array (      'app_id' => '',      'app_secret' => '',      'scope' => 'snsapi_userinfo',    ),    'value' =>     array (      'app_id' => '小程序appid',      'secret' => '小程序secret',      'scope' => 'get_user_info',    ),    'rule' => 'required',    'msg' => '',    'tip' => '',    'ok' => '',    'extend' => '',  )

第四步:修改addonsthirdlibraryApplication.php 加入wechatmini

'qq'     => 'Qq',        'weibo'  => 'Weibo',        'wechat' => 'Wechat',        'wechatmini' => 'Wechatmini',

第五步:添加addonsthirdlibraryWechatmini.php 文件

<?phpnamespace addonsthirdlibrary;use fastHttp;use thinkConfig;use thinkSession;use EasyWeChatFoundationApplication;/** * 微信 */class Wechatmini{    /**     * 配置信息     * @var array     */    private $config = [];    public function __construct($options = [])    {        if ($config = Config::get('third.wechatmini'))        {            $this->config = array_merge($this->config, $config);        }        $this->config = array_merge($this->config, is_array($options) ? $options : []);    }        /**     * 获取用户信息     * @param array $params     * @return array     */    public function getUserInfo($params = [])    {        $params = $params ? $params : $_GET;                if (isset($params['code']))        {                                if ($params['code'])            {                $config['mini_program'] = $this->config;                $app = new Application($config);                $miniProgram = $app->mini_program;                                $sns = $miniProgram->sns->getSessionKey($params['code']);                if($sns['openid']){                    $userinfo = $params['rawData'] ? json_decode($params['rawData'],true) : [];                    $userinfo['avatar'] = isset($userinfo['avatarUrl']) ? $userinfo['avatarUrl'] : '';                    $userinfo['nickname'] = isset($userinfo['nickName']) ? $userinfo['nickName'] : '';                    $result = [                        'access_token'  => '',                        'refresh_token' => '',                        'expires_in'    => 0,                        'openid'        => $sns['openid'],                        'unionid'       => '',                        'userinfo'      => $userinfo                    ];                                        return $result;                }                                            }        }        return [];    }}

第六步:修改 third() 传入rawData参数 比如apiuser
注:$rawData = $this->request->request('rawData'); 和 'rawData'=>$rawData 为添加内容

$url = url('user/index');        $platform = $this->request->request("platform");        $rawData = $this->request->request('rawData');        $code = $this->request->request("code");        $config = get_addon_config('third');        if (!$config || !isset($config[$platform]))        {            $this->error(__('Invalid parameters'));        }        $app = new addonsthirdlibraryApplication($config);        //通过code换access_token和绑定会员        $result = $app->{$platform}->getUserInfo(['code' => $code,'rawData'=>$rawData]);        if ($result)        {            $loginret = addonsthirdlibraryService::connect($platform, $result);            if ($loginret)            {                $data = [                    'userinfo'  => $this->auth->getUserinfo(),                    'thirdinfo' => $result                ];                $this->success(__('Logged in successful'), $data);            }        }        $this->error(__('Operation failed'), $url);

好了 这里就完成了小程序的基本接入,因为是小白,那么代码有不完善的地方,还请大牛指教

另外有个文件 也改动了一下addonsthirdlibraryService 42行

 $user = appcommonmodelUser::get($third['user_id']);


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部