<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        微信小程序如何獲取用戶信息

        來源:懂視網 責編:小采 時間:2020-11-27 22:20:45
        文檔

        微信小程序如何獲取用戶信息

        微信小程序如何獲取用戶信息:最近在研究微信小程序怎么玩的。接觸后發現好多的坑。 比如在瀏覽器中我們可以通過document.getElementById 獲取到頁面的DOM對象。而在微信小程序中是獲取不到DOM對象的。document.getElementById() 直接報錯 getElementById not f
        推薦度:
        導讀微信小程序如何獲取用戶信息:最近在研究微信小程序怎么玩的。接觸后發現好多的坑。 比如在瀏覽器中我們可以通過document.getElementById 獲取到頁面的DOM對象。而在微信小程序中是獲取不到DOM對象的。document.getElementById() 直接報錯 getElementById not f

        最近在研究微信小程序怎么玩的。接觸后發現好多的坑。

        比如在瀏覽器中我們可以通過document.getElementById 獲取到頁面的DOM對象。而在微信小程序中是獲取不到DOM對象的。document.getElementById() 直接報錯 getElementById not function 我也是醉了。不支持這個好多有趣的功能不能實現了。
        言歸正傳,我談下獲取用戶信息的感想。

        有兩種獲取用戶信息的方案。
        1、不包含敏感信息openId 的json對象(包含:nickname、avatarUrl等基本信息)
        2、包含敏感信息openId的基本信息。

        第一種獲取方案

        1、首先調用wx.login()接口 讓用戶授權驗證,也就是我們肉眼觀察到的,你是否對xxxxx授權這種信息。
        2、用戶成功授權后,調用wx.getUserInfo() 接口獲取用戶信息。

        完整代碼如下

        wx.login({
         success:function(){
         wx.getUserInfo({
         success:function(res){
         var simpleUser = res.userInfo;
         console.log(simpleUser.nickName);
         }
         });
         }
        });
        
        

        第二種比較復雜了,需要與后臺進行交互才能獲得userInfo,但是這種方案獲得的數據是完整的(包含openId)。

        1、調用wx.login()接口 授權 在success 成功函數的參數中包含code。
        2、調用wx.getUserInfo()接口success 函數中包含encryptedData、iv
        3、將上述參數傳給后臺解析,生成userInfo

        代碼如下
        js

        var request = require("../../utils/request.js");
        
        wx.login({
         success:function(res_login){
         if(res_login.code)
         {
         wx.getUserInfo({
         withCredentials:true,
         success:function(res_user){
         var requestUrl = "/getUserApi/xxx.php";
         var jsonData = {
         code:res_login.code,
         encryptedData:res_user.encryptedData,
         iv:res_user.iv
         };
         request.httpsPostRequest(requestUrl,jsonData,function(res){
         console.log(res.openId);
         });
         }
         })
         }
         }
         })
        
        

        后臺解析

        /**
         * 獲取粉絲信息
         * 其中的參數就是前端傳遞過來的
         */
        public function wxUserInfo($code,$encryptedData,$iv)
        {
         $apiUrl = "https://api.weixin.qq.com/sns/jscode2session?appid={$this->wxConfig['appid']}&secret={$this->wxConfig['appsecret']}&js_code={$code}&grant_type=authorization_code";
        
         $apiData = json_decode(curlHttp($apiUrl,true),true);
        
         if(!isset($apiData['session_key']))
         {
         echoJson(array(
         "code" => 102,
         "msg" => "curl error"
         ),true);
         }
        
         $userInfo = getUserInfo($this->wxConfig['appid'],$apiData['session_key'],$encryptedData,$iv);
        
         if(!$userInfo)
         {
         echoJson(array(
         "code" => 105,
         "msg" => "userInfo not"
         ));
         }
        
         //$userInfo = json_decode($userInfo,true);
        
         //載入用戶服務
         //$userService = load_service("User");
        
         //$userService->checkUser($this->projectId,$userInfo);
        
         echo $userInfo; //微信響應的就是一個json數據
        }
        
        

        getUserInfo function 其中wxBizDataCrypt.php 就是微信官方提供的素材包

        curlHttp 函數是一個自定函數 該函數的源碼查看我的這篇文章curlHttp

        //獲取粉絲信息
        function getUserInfo($appid,$sessionKey,$encryptedData,$iv){
         require_once ROOTPATH . "/extends/wxUser/wxBizDataCrypt.php";
         $data = array();
         $pc = new WXBizDataCrypt($appid, $sessionKey);
         $errCode = $pc->decryptData($encryptedData, $iv, $data );
        
         if ($errCode == 0) {
         return $data;
         } else {
         return false;
         }
        }
        
        

        自己寫的小工具 request.js

        var app = getApp();
        
        //遠程請求
        var __httpsRequest = {
        
         //http 請求
         https_request : function(obj){
         wx.request(obj);
         },
        
         //文件上傳
         upload_request : function(dataSource){
         wx.uploadFile(dataSource);
         }
        };
        
        module.exports = {
         //執行異步請求get
         httpsRequest:function(obj){
         var jsonUrl = {};
         jsonUrl.url = obj.url;
         if(obj.header)jsonUrl.header=obj.header;
         if(obj.type)
         jsonUrl.method = obj.type;
         else
         jsonUrl.method="GET";
         if(obj.data)jsonUrl.data = obj.data;
         obj.dataType?(jsonUrl.dataType=obj.dataType):(jsonUrl.dataType="json");
        
         jsonUrl.success = obj.success;
        
         jsonUrl.data.projectId = app.globalData.projectId;
        
         __httpsRequest.https_request(jsonUrl);
         },
        
         //get 請求
         httpsGetRequest:function(req_url,req_obj,res_func)
         {
         var jsonUrl = {
         url:app.globalData.host + req_url,
         header:{"Content-Type":"application/json"},
         dataType:"json",
         method:"get",
         success:function(res)
         {
         typeof res_func == "function" && res_func(res.data);
         }
         }
        
         if(req_obj)
         {
         jsonUrl.data = req_obj;
         }
        
         jsonUrl.data.projectId = app.globalData.projectId;
        
         __httpRequest.https_request(jsonUrl);
         },
        
         //post 請求
         httpsPostRequest:function(req_url,req_obj,res_func)
         {
         var jsonUrl = {
         url:app.globalData.host + req_url,
         header:{"Content-Type":"application/x-www-form-urlencoded"},
         dataType:"json",
         method:"post",
         success:function(res)
         {
         typeof res_func == "function" && res_func(res.data);
         }
         }
        
         if(req_obj)
         {
         jsonUrl.data = req_obj;
         }
        
         jsonUrl.data.projectId = app.globalData.projectId;
        
         __httpsRequest.https_request(jsonUrl);
         },
        
         //文件上傳
         httpsUpload:function(uid,fileDataSource,res_func)
         {
         dataSource = {
         url:app.globalData.host + req_url,
         header:{
         "Content-Type":"multipart/form-data"
         },
         dataType:"json",
         formData : {
         "uid" : uid
         },
         filePath : fileDataSource,
         name : "fileObj",
         success:function(res){
         typeof res_func == "function" && res_func(res);
         }
         }
        
         __httpsRequest.upload_request(dataSource);
         }
        };
        
        

        app.globalData.host 就是域名地址如 https://xxxxx.com;

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        微信小程序如何獲取用戶信息

        微信小程序如何獲取用戶信息:最近在研究微信小程序怎么玩的。接觸后發現好多的坑。 比如在瀏覽器中我們可以通過document.getElementById 獲取到頁面的DOM對象。而在微信小程序中是獲取不到DOM對象的。document.getElementById() 直接報錯 getElementById not f
        推薦度:
        標簽: 微信 信息 小程序
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 羞羞视频免费网站日本| 亚洲成AV人片一区二区| 97久久国产亚洲精品超碰热| APP在线免费观看视频| 在线观看亚洲精品福利片| 一级女性全黄久久生活片免费 | 亚洲av无码一区二区三区天堂| 野花高清在线观看免费3中文| 亚洲免费观看在线视频| 我的小后妈韩剧在线看免费高清版| 亚洲精品在线免费观看视频| 亚洲免费福利在线视频| 亚洲人成777在线播放| 成人看的午夜免费毛片| 亚洲日韩AV一区二区三区中文| 午夜成年女人毛片免费观看| 亚洲AV香蕉一区区二区三区| 又爽又黄无遮挡高清免费视频| 丰满少妇作爱视频免费观看| 亚洲精品无码午夜福利中文字幕| 99久久久国产精品免费牛牛四川 | 国产免费一区二区视频| 亚洲视频在线观看一区| 114一级毛片免费| 亚洲精品国产第一综合99久久 | 国产女高清在线看免费观看 | 久久久久久一品道精品免费看 | 男人的天堂亚洲一区二区三区| 久久亚洲国产最新网站| 免费一级国产生活片| 三年片免费观看大全国语| 亚洲精品福利网泷泽萝拉| 最近2019中文字幕mv免费看| 暖暖免费中文在线日本| 亚洲综合精品香蕉久久网97| 永久免费av无码网站韩国毛片| 春意影院午夜爽爽爽免费| 亚洲第一区视频在线观看| 免费乱码中文字幕网站| 久久青草免费91线频观看不卡| 亚洲精华国产精华精华液网站|