第一步:执行安装第三方登录插件
第二步:执行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修复,程序杀毒,插件定制都可以提供最佳解决方案。