• 微信小程序登陆demo


      //封装调用方法  也可以 file_get_contents($url); 
      public function getJson($url){
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($ch);
            curl_close($ch);
            return json_decode($output, true);
        }

    进入正题  微信小程序是怎么登陆的呢?
       1。前端获取微信的code码

       2。后台通过Appid AppSecret  先获取token 

       3。通过code Appid AppSecret 获取openid

       4。用过token openid  获取用户信息

      //这个只是验证登陆
    public function getParint() {
    
            $code = $_POST['code'];//接受code、用户信息
            if(!$code){
                msg(['code' => 20,'message' => "参数为空" ]);
            }
    
            $appid = C('APPID');
            $AppSecret = C('AppSecret');
    
            /*取得openid*/
            $oauth2Url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$AppSecret&js_code=$code&grant_type=authorization_code";
            $oauth2 = $this->getJson($oauth2Url);
            $openid = $oauth2['openid'];//openID
            $user = M('users');
            $lists = [];
            $lists['openid'] = $openid;
            $lists['time'] = date('Y-m-d H:i:s');//登陆时间
    
            $parteny = $user -> where(['openid'=>$openid]) -> find();
            //如果是第一次进,添加
            if(empty($parteny)){
                $start = 1;
                $acces = $user->data($lists)->add();//记录
                if(!$acces){
                    $this->ajaxReturn(['code' => 0,'message' => "获取信息失败",'openid'=>$openid ]);
                }
                $this->ajaxReturn(['code'=>1,'data'=>$openid,'state' => $start]);
            }else{
                $start = 2;
            }
            $this->ajaxReturn(['code'=>1,'data'=>$parteny['openid'],'state' => $start]);
    
        }
     /**
    *
    * 微信授权
    */
    public static function wechat_login($appid, $appsecret, $code)
    {
        $token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $appsecret . '&code=' . $code . '&grant_type=authorization_code';
    
        $token = json_decode(file_get_contents($token_url      ));
    
        if (isset($token->errcode)) {
            return false;
        }
        $access_token_url = 'https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=' . $appid . '&grant_type=refresh_token&refresh_token=' . $token->refresh_token;
        //转成对象
        $access_token = json_decode(file_get_contents($access_token_url));
        if (isset($access_token->errcode)) {
            return false;
        }
        $user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token->access_token . '&openid=' . $access_token->openid . '&lang=zh_CN';
        //转成对象
        $user_info = json_decode(file_get_contents($user_info_url));
        if (isset($user_info->errcode)) {
             return false;      
        }
    
        $result = json_decode(json_encode($user_info), true);//返回的json数组转换成array数组
      
        return $result;
    }

    其他网站的:

    //返回内容:     
    [subscribe] => 1
    [openid] => oZE7SjqjC_A88aGfaj_X8tJDC
    [nickname] => 大仙
    [sex] => 1
    [language] => zh_CN
    [city] => 大兴
    [province] => 北京
    [country] => 中国 [headimgurl]
    function getUserInfoAll($code) { $appid = WX_APP_ID; $secret = WX_SECRET; //第一步:取全局access_token $token = $global_token; //第二步:取得openid $oauth2Url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code"; $oauth2 = getJson($oauth2Url); //第三步:根据全局access_token和openid查询用户信息 $access_token = $token; $openid = $oauth2['openid']; $get_user_info_url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";//有subscribe $userinfo = getJson($get_user_info_url); session_start(); // session_id($userinfo['openid']); if($userinfo['subscribe']==1){ $_SESSION['userinfo']=$userinfo; } return $userinfo; } //返回无subscribe function getUserInfo($code) { $appid = WX_APP_ID; $appsecret = WX_SECRET; $access_token = ""; //根据code获得Access Token $access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code"; $access_token_json = https_request($access_token_url); $access_token_array = json_decode($access_token_json, true); $access_token = $access_token_array['access_token']; $openid = $access_token_array['openid']; //根据Access Token和OpenID获得用户信息 $userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid ";//无subscribe $userinfo = https_request($userinfo_url); $userinfo = json_decode($userinfo, true); return $userinfo; }
  • 相关阅读:
    练习三
    练习四
    练习二
    软件生命周期
    练习一 第六题
    练习一 第五题
    练习一 第四题
    练习一 第三题
    练习一 第二题
    AngularJs模块
  • 原文地址:https://www.cnblogs.com/yx520zhao/p/13570981.html
Copyright © 2020-2023  润新知