• 小程序微信登录+服务端


    小程序微信登录

    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

  • 相关阅读:
    怎么让Windows2012和Windows2008多用户同时远程
    IIS站点/虚拟目录中访问共享目录(UNC)以及建立后的应用程序的信任级别问题
    Mac 快捷键
    SQL Server Profiler
    vscode 实用插件
    Xss测试
    RequireJS和AMD规范
    ECMAScript 6.0 学习笔记
    使用 create-react-app 构建 react应用程序
    vscode 快捷键
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/6292867.html
Copyright © 2020-2023  润新知