使用codeigniter写小程序 一 搭建微信登录框架
凌雪 2018-11-12 来源 :网络 阅读 1526 评论 0

摘要:本文将带你了解使用codeigniter写小程序 一 搭建微信登录框架,希望本文对大家学微信有所帮助。

本文将带你了解使用codeigniter写小程序 一 搭建微信登录框架,希望本文对大家学微信有所帮助。


使用library 中的   微信登录 校验工具 (工具源码作者 小黑黑 ) 原本的脚手架是基于tp的小程序登录,把他稍微改进了用到CI中。 官方手册写的流程太复杂了,建议精简下,我看了一天的文档,其实东西不算很难,只是简单的东西复杂化了。 微信登录的流程大概是   小程序->业务服务器->传递最后的session3rd到微信服务器 同时把   session3rd json给 小程序,保存在客户端就可以。 用户进入小程序的时候,先 post session3rd给 业务服务器,查询缓存中是否还存在,存在就返回session3rd的内容,否则重新登录。必要设置:CI memcached 参考 memcached配置假设,你的网址是 https://www.abc.com/api 首先,把wafer目录放入   api中 其次,把wafer-session-server-master 目录放到 api目录中 注意,是整个目录放进去linux主机的话,需要 在 系统/etc/新建 qcloud目录。   新建个文本文件粘贴如下代码:{   "serverHost": "www.xx.com", "authServerUrl":   "//www.xx.com/itjaye/wafer-session-server/",   "tunnelServerUrl": "https://ws.qcloud.com",   "tunnelSignatureKey": "xxxxxx", "networkTimeout":   30000 } serverHost 你的业务服务器的域名,上面部署wafer SDK代码   authServerUrl 会话服务地址,登陆授权会用到。上面部署会话服务的代码 tunnelServerUrl 这个是信道服务器地址,不需要部署,直接使用腾讯提供的信道服务器地址https://ws.qcloud.com tunnelSignatureKey 修改成自己的签名秘钥,随便自己定义一个就行 将文件保存为sdk.config并上传到/etc/qcloud/sdk.config (需要在/etc/下面自己创建下qcloud这个目录)具体请参考:自行部署小程序开发套件进入CI wafer目录中,composer install,安装依赖文件。 使用框架: 微信官方demo wafer library库 源码作者小小黑 需要删除命名空间, WXLoginHelper 文件里面需要导入 require_once 其他的文件进来。微信登录例子        Class UserLogin   extends CI_Controller
        {
            function   __construct()
            {
                  parent::__construct();
                    $this->load->library(array('WXLoginHelper'));
                    $this->load->model('General');
                    $this->load->driver('cache');
   
                }
   
                function login()
            {
                     /* code,   rawData, signature, encryptData iv */
                     $postData =   $this->input->post(array('code','rawData','signature','encryptedData','iv'));
                     $code = $postData['code'];
                     $rawData =   $postData['rawData'];
                     $signature =   $postData['signature'];
                     $encryptedData =   $postData['encryptedData'];
                     $iv =   $postData['iv'];
                     $test = new   WXLoginHelper;
                     $data =   $test->checkLogin($code,$rawData,$signature,$encryptedData,$iv);
                     $session = $this->cache->memcached->save($data['session3rd'],   $data['openId'] . $data['sessionKey']);
                     //检查user表是否存在改用户,如果存在,则则返回session,如果不存在,写入表再发回session
                     $find =   $this->General->query('user',array('openid'=>$data['openId']));
                     $find = $find   ==null ? 0:$find[0];
                     if($find ==   0)
                     {
                         $user_id =   $this->General->insert('user',array('openId'=>$data['openId'],'nickName'=>$data['nickName'],
                                                   'gender'=>$data['gender'],'city'=>$data['city'],'language'=>$data['language'],'province'=>$data['province'],'country'=>$data['country'],'avatarUrl'=>$data['avatarUrl']));
   
                         } else{
   
                             $user_id =   $find['id'];
   
                         }
   
                           if(isset($find['avatarUrl'] && $find['avatarUrl'] !== $data['avatarUrl'])
                         {
                               $this->General->update('user',array('id'=>$user_id),array('avatarUrl'=>$data['avatarUrl']));   //如果头像更改,则更新头像
                         }
   
                        echo   json_encode(array('status'=>0,'session3rd'=>$data['session3rd'],'user_id'=>$user_id));
   
   
   
   
                }
   
                function   checkLogin()
            { //如果客户端存在 session3rd,则post 到此接口,获取对应数据
                  $session3rd = $this->input->post('session3rd');
                $data =   $this->cache->memcached->get($session3rd);
                echo   json_encode(array('status'=>0,'session3rd'=>$data));
   
                }
   
   
            }
字段类型空默认注释uidint(10)否openIdvarchar(20)否openidnickNamevarchar(50)否密码genderint(50)否性别languagevarchar(50)否密码cityvarchar(50)否城市provincevarchar(50)否省份countryvarchar(50)否国家avataUrlvarchar(50)否头像reg_timeint(11)否0注册时间    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 2
看完这篇文章有何感觉?已经有2人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程