zoukankan      html  css  js  c++  java
  • 微信小程序登陆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; }
  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/yx520zhao/p/13570981.html
Copyright © 2011-2022 走看看