zoukankan      html  css  js  c++  java
  • 小程序微信登录+服务端

    小程序微信登录

    1.在小程序全局js  app.js文件中,调用小程序微信登录接口

    将小程序获取到用户的code  POST方式发送到服务器端

    //调用登录接口
    wx.login({
    success:function(res){

      console.log(res)
      if(res.code){
        //存在code
        wx.request({
          url:'http://shop.yunapply.com/home/user/saveOpenId',
          data: {code:res.code},
          method:'POST',
          header: {
            "content-type": "application/x-www-form-urlencoded"
          },
          success: function(res){
            that.globalData.userId = res.data.info
          },
          fail: function() {
            console.log('服务器请求失败!')
          },
        })
      }else{
        console.log('获取用户信息失败!'+res.errMsg)
      }
    }
    })

    调用接口成功以后打印出接口对象,可以得到如下信息

    这里的code,有效时间是5分钟,需要将这个code发送到服务器,用code换取session_key API,将code换成OPENIDsession_key

    2.在服务器端将带有appidsecretjs_codegrant_type数据,发送到微信服务器,换取session_keyopenid

    https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

    这里JSCODE就是放置code的地方

    3.服务器端代码

    public function saveOpenId(){
        if (IS_POST) {
            $code = I('post.code');
            if($code){
                $url = "https://api.weixin.qq.com/sns/jscode2session?appid=XXXX&js_code=".$code."&grant_type=authorization_code";
                $res = file_get_contents($url); //获取文件内容或获取网络请求的内容
                $result = json_decode($res);
                if($result->openid){
                    $openid = $result->openid;
                    $user = D('user');
                    $userInfo = $user->where(array('openid'=>$openid))->find();
                    if(!$userInfo){
                        $data['openid'] = $openid;
                        $data['modifytime'] = date("Y-m-d H:i:s");
                        $userId = $user->add($data);
                        $this->success($userId,'',true);
                    }else{
                        $this->success($userInfo['id'],'',true);
                    }
                }
                
            }
            
        }

    流程:发送带有codeURL,获取网页内容,判断openid是否存在,存在就将用户ID返回,不存在就添加用户然后将ID返回。

    wx.login成功获取了用户ID,再把这个ID赋值给全局变量,UserId

  • 相关阅读:
    thinkphp ajax分页加载更多最简单的实现方法
    thinkphp整合系列之phpexcel导入excel数据
    Nginx详细安装部署教程
    swoole 安装方法
    tpshop使用中遇到的问题
    Oracle 的分页查询 SQL 语句
    使用 PLSQL 提示动态执行表不可访问,本会话的自动统计被禁止
    JavaScript实现多张图片上传功能
    JavaScript控制页码的显示与隐藏
    Struts2 项目 Action 查询结果异常 org.apache.struts2.json.JSONException
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/6292867.html
Copyright © 2011-2022 走看看