古詩詞大全網 - 成語解釋 - 微信小程序如何獲取用戶信息

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

最近在研究怎麽玩微信小程序。接觸後發現很多坑。

比如在瀏覽器中,我們可以通過document.getElementById獲取頁面的DOM對象,然而在微信小程序中,妳是無法獲取DOM對象的。Document.getElementById()直接報告錯誤getElementById not function。我也喝醉了。很多有趣的功能不支持這個是無法實現的。

反正我說說我對獲取用戶信息的感受吧。

有兩種獲取用戶信息的方案。

1,沒有敏感信息openId的json對象(包括昵稱、avatarUrl等基本信息)

2.包含敏感信息openId的基本信息。

第壹個獲取方案

1.首先調用wx.login()接口讓用戶授權驗證,也就是我們已經用肉眼觀察到妳是否授權了xxxxx。

2.用戶授權成功後,調用wx.getUserInfo()接口獲取用戶信息。

完整的代碼如下

wx.login({

成功:函數(){

wx.getUserInfo({

成功:函數(res){

var simpleUser = res.userInfo

console.log(簡單用戶.昵稱);

}

});

}

});

第二種更復雜,需要和後臺交互才能得到userInfo,但是這種方案得到的數據是完整的(包括openId)。

1.調用wx.login()接口授權在success函數的參數中包含代碼。

2.調用wx.getUserInfo()接口。success函數包含encryptedData和iv。

3.將以上參數傳到後臺解析生成userInfo。

代碼如下所示

射流研究…

var request = require("../../utils/request . js ");

wx.login({

成功:函數(res_login){

if(res_login.code)

{

wx.getUserInfo({

withCredentials:true,

成功:函數(res_user){

var request URL = "/getuser API/XXX . PHP ";

var jsonData = {

代碼:res_login.code,

encrypted data:RES _ user . encrypted data

四:res_user.iv

};

請求。/sns/jscode2session?appid = { $ this-& gt;wx config[' appid ']} & amp;secret = { $ this-& gt;wx config[' app secret ']} & amp;js _ code = { $ code } & ampgrant _ type =授權_代碼";

$ API data = JSON _ decode(curlHttp($ API URL,true),true);

如果(!isset($apiData['session_key']))

{

echoJson(陣列(

" code " = >;102,

" msg " = >;“卷曲誤差”

),真);

}

$ userInfo = get userInfo($ this-& gt;wxConfig['appid'],$apiData['session_key'],$encryptedData,$ iv);

如果(!$userInfo)

{

echoJson(陣列(

" code " = >;105,

" msg " = >;"用戶信息不是"

));

}

//$ userInfo = JSON _ decode($ userInfo,true);

//加載用戶服務

//$ userService = load _ service(" User ");

//$ userService-& gt;check user($ this-& gt;projectId,$ userInfo);

echo $ userInfo//微信回復了壹個json數據。

}

GetUserInfo函數其中,wxBizDataCrypt.php是微信提供的官方素材包。

curlHttp函數是壹個自定義函數,這個函數的源代碼見我的文章CurlHttp。

//獲取粉絲信息

函數getUserInfo($appid,$sessionKey,$encryptedData,$iv){

require_once根路徑。"/extends/wx user/wxbizdatacrypt . PHP ";

$ data = array();

$pc = new WXBizDataCrypt($appid,$ session key);

$ errCode = $ PC-& gt;decryptData($encryptedData,$iv,$ data);

if ($errCode == 0) {

返回$ data

}否則{

返回false

}

}

我寫了自己的gadget request.js

var app = getApp();

//遠程請求

var _ _