亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

微信小程序獲取用戶信息及手機號(后端TP5.0)

2019-11-19 09:22:35
字體:
來源:轉載
供稿:網友

本文實例為大家分享了微信小程序獲取用戶信息及手機號的具體代碼,供大家參考,具體內容如下

wxml頁面

<view wx:if="{{config.tipsshow1}}" class='dialog-container'> <view class='dialog-mask'></view> <view class='dialog-info'> <view class='dialog-title'>login prompt</view> <view class='dialog-content'>To provide better service, click "allow" in the prompt box later!</view> <view class='dialog-footer'>  <button class='dialog-btn' open-type="getUserInfo" bindgetuserinfo="getUserInfo">I see.</button> </view> </view></view><view wx:if="{{config.tipsshow2}}" class='dialog-container'> <view class='dialog-mask'></view> <view class='dialog-info'> <view class='dialog-title'>login prompt</view> <view class='dialog-content'>To provide better service, click "allow" in the prompt box later!</view> <view class='dialog-footer'>  <button class='dialog-btn' open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">To authorize.</button> </view> </view></view>

wxss頁面

.dialog-mask{ position: fixed; z-index: 1000; top: 0; right: 0; left: 0; bottom: 0; background: rgba(0, 0, 0, 0.3);}.dialog-info{ position: fixed; z-index: 5000; width: 80%; max-width: 600rpx; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); background-color: #FFFFFF; text-align: center; border-radius: 3px; overflow: hidden;}.dialog-title{ font-size: 36rpx; padding: 30rpx 30rpx 10rpx;}.dialog-content{ padding: 10rpx 30rpx 20rpx; min-height: 80rpx; font-size: 32rpx; line-height: 1.3; word-wrap: break-word; word-break: break-all; color: #999999;}.dialog-footer{ display: flex; align-items: center; position: relative; line-height: 90rpx; font-size: 34rpx;}.dialog-btn{ display: block; -webkit-flex: 1; flex: 1; position: relative; color: #3CC51F;}

js頁面

data: { userName: '', pwd: '', getUserInfoFail: '', userInfo: [], hasUserInfo: '', phone: '', config: {  tipsshow1: true,  tipsshow2: false } }, /** * 生命周期函數--監聽頁面加載 */ onLoad: function(options) { var that = this; //用戶是否授權過手機號 wx.getStorage({  key: 'phone',  success: function (res) {  that.setData({   config: {   tipsshow1: false,   tipsshow2: false   },  })  } }) //是否授權過用戶信息 wx.getSetting({  success: function(res) {  if (res.authSetting['scope.userInfo']) {   // 已經授權,可以直接調用 getUserInfo 獲取頭像昵稱   wx.getUserInfo({   success: function(res) {    that.setData({    userInfo: res.userInfo,    config: {     tipsshow1: false,    },    })   }   })  }  } }) }, getPhoneNumber: function(e) { if (e.detail.errMsg == "getPhoneNumber:fail user deny") return; //用戶允許授權 wx.showLoading() var self = this //1. 調用登錄接口獲取臨時登錄code wx.login({  success: res => {  console.log(res, 555)  if (res.code) {   //2. 訪問登錄憑證校驗接口獲取session_key、openid   wx.request({   url: "xxxxxxx/index/author/login",   data: {    'js_code': res.code,   },   method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT   header: {    'content-type': 'application/json'   }, // 設置請求的 header   success: function(data) {    console.log(data, data)    if (data.statusCode == 200) {    //3. 解密    wx.request({     url: 'xxxxxx/index/author/number',     data: {     'appid': data.data.appid,     'sessionKey': data.data.session_key,     'encryptedData': e.detail.encryptedData,     'iv': e.detail.iv,     },     method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT     header: {     'content-type': 'application/json'     }, // 設置請求的 header     success: function(data2) {     wx.hideLoading()     console.log(data2.data.phoneNumber)     if (data2.statusCode == 200 && data2.data.phoneNumber) {      self.setData({      phone: data2.data.phoneNumber,      config: {       tipsshow1: false,       tipsshow2: false,      },      })      wx.setStorageSync('phone', data2.data.phoneNumber);      if (self.data.userInfo != '') {      wx.request({       url: 'xxxx/index/author/regist',       data: {       username: self.data.userInfo.nickName,       sex: self.data.userInfo.gender,       phone: self.data.phone,       pwd: 123456,       avatarimg: self.data.userInfo.avatarUrl       },       success: function(data) {        console.log(data.data,56565)        if (data.data != null) {        wx.showToast({         title: '登錄中...',         icon: 'loading',         duration: 2000        })        wx.navigateTo({         url: '../managementList/managementList'//管理頁面        })        }       }      });      }      console.log(self.data, 526336)     }     },     fail: function(err) {     console.log(err);     }    })    }   },   fail: function(err) {    console.log(err);   }   })  }  } }) }, getUserInfo: function(e) { var that = this; console.log(e.detail.userInfo, "getuserinfo") if (e.detail.userInfo) {  that.setData({  userInfo: e.detail.userInfo,  config: {   tipsshow1: false,   tipsshow2: true,  },  })  console.log(that.data.userInfo); } else {  console.log("獲取信息失敗") } },

PHP后端

<?phpnamespace app/index/controller;use think/Controller;use app/admin/model/UserRecharge;use think/Db;class Author extends Controller{ /**  * 發送HTTP請求方法  * @param string $url 請求URL  * @param array $params 請求參數  * @param string $method 請求方法GET/POST  * @return array $data 響應數據  */ function httpCurl($url, $params, $method = 'POST', $header = array(), $multi = false){  date_default_timezone_set('PRC');  $opts = array(   CURLOPT_TIMEOUT  => 30,   CURLOPT_RETURNTRANSFER => 1,   CURLOPT_SSL_VERIFYPEER => false,   CURLOPT_SSL_VERIFYHOST => false,   CURLOPT_HTTPHEADER  => $header,   CURLOPT_COOKIESESSION => true,   CURLOPT_FOLLOWLOCATION => 1,   CURLOPT_COOKIE   =>session_name().'='.session_id(),  );  /* 根據請求類型設置特定參數 */  switch(strtoupper($method)){   case 'GET':    // $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);    // 鏈接后拼接參數 & 非?    $opts[CURLOPT_URL] = $url . '?' . http_build_query($params);    break;   case 'POST':    //判斷是否傳輸文件    $params = $multi ? $params : http_build_query($params);    $opts[CURLOPT_URL] = $url;    $opts[CURLOPT_POST] = 1;    $opts[CURLOPT_POSTFIELDS] = $params;    break;   default:    throw new Exception('不支持的請求方式!');  }  /* 初始化并執行curl請求 */  $ch = curl_init();  curl_setopt_array($ch, $opts);  $data = curl_exec($ch);  $error = curl_error($ch);  curl_close($ch);  if($error) throw new Exception('請求發生錯誤:' . $error);  return $data; } /**  * 微信信息解密  * @param string $appid 小程序id  * @param string $sessionKey 小程序密鑰  * @param string $encryptedData 在小程序中獲取的encryptedData  * @param string $iv 在小程序中獲取的iv  * @return array 解密后的數組  */ function decryptData( $appid , $sessionKey, $encryptedData, $iv ){  $OK = 0;  $IllegalAesKey = -41001;  $IllegalIv = -41002;  $IllegalBuffer = -41003;  $DecodeBase64Error = -41004;  if (strlen($sessionKey) != 24) {   return $IllegalAesKey;  }  $aesKey=base64_decode($sessionKey);  if (strlen($iv) != 24) {   return $IllegalIv;  }  $aesIV=base64_decode($iv);  $aesCipher=base64_decode($encryptedData);  $result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);  $dataObj=json_decode( $result );  if( $dataObj == NULL )  {   return $IllegalBuffer;  }  if( $dataObj->watermark->appid != $appid )  {   return $DecodeBase64Error;  }  $data = json_decode($result,true);  return $result; } /**  * 請求過程中因為編碼原因+號變成了空格  * 需要用下面的方法轉換回來  */ function define_str_replace($data) {  return str_replace(' ','+',$data); } //獲取手機號 public function number($appid , $sessionKey, $encryptedData, $iv) {  include_once (ROOT_PATH."./public/author/wxBizDataCrypt.php"); //引入 wxBizDataCrypt.php 文件  $appid = $appid;  $sessionKey = $sessionKey;  $encryptedData= $encryptedData;  $iv = $iv;  $data = '';  $pc = new /WXBizDataCrypt($appid, $sessionKey); //注意使用/進行轉義  $errCode = $pc->decryptData($encryptedData, $iv, $data );  if ($errCode == 0) {   print($data . "/n");  } else {   print($errCode . "/n");  } } //微信登錄 public function login(){  $get = input('get.');  $param['appid'] = 'xxxxxxxxxx'; //小程序id  $param['secret'] = 'xxxxxxxxxx'; //小程序密鑰  $param['js_code'] = $this->define_str_replace($get['js_code']);  $param['grant_type'] = 'authorization_code';  $http_key = $this->httpCurl('https://api.weixin.qq.com/sns/jscode2session', $param, 'GET');  $session_key = json_decode($http_key,true);//獲取openid和session_key  //print_r(http_build_query($param));  if (!empty($session_key['session_key'])) {   $data['appid'] = $param['appid'];   $data['session_key'] = $session_key['session_key'];   return json($data);  }else{   echo '獲取session_key失??!';  } } //用戶注冊 public function regist($username = "",$sex = "", $phone = "",$password = "",$avatarimg = "") {  if ($phone){   //判斷該用戶是否已經注冊   $userdata = Db::name('user')->where('phone',$phone)->find();   if ($userdata){    return json_encode(2);   }   //整合數組   $salt = '1122';   $password = Md5(Md5($password) . $salt);   $data = [    'name' => $username,    'sex' => $sex,    'phone' => $phone,    'password' => $password,    'avatarimg' => $avatarimg,    'logtime' => date("Y-m-d H:i:s"),    'addTime' => date("Y-m-d H:i:s")   ];   //注冊新用戶   $userid = db('user')->insertGetId($data);   if ($userid){    return json_decode(1);   }else{    return json_encode(0);   }  } }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美第一黄网免费网站| 亚洲精品在线视频| 欧美极品少妇全裸体| 精品亚洲一区二区三区| 日韩精品免费在线| 欧美激情一区二区久久久| 久久最新资源网| 欧美一级黄色网| 77777少妇光屁股久久一区| 成人高清视频观看www| 亚洲国产精品成人精品| 国产一区二区精品丝袜| 91九色蝌蚪国产| 久久精品国产精品亚洲| 91色琪琪电影亚洲精品久久| 久久99热精品这里久久精品| 国产精品www| www国产亚洲精品久久网站| 国产一区二区三区视频在线观看| 久久国产加勒比精品无码| 成人免费网站在线观看| 国产精品白嫩美女在线观看| 成人在线精品视频| 日韩精品福利在线| 日韩精品中文在线观看| 亚洲精品综合久久中文字幕| 精品国产一区二区三区久久狼黑人| 成人免费视频xnxx.com| 性欧美xxxx视频在线观看| 欧美性极品少妇精品网站| 韩曰欧美视频免费观看| 一区二区在线免费视频| 久久久久久亚洲精品中文字幕| 国产精品久久婷婷六月丁香| 一区二区三区回区在观看免费视频| 狠狠爱在线视频一区| 亚洲老司机av| 日本在线精品视频| 亚洲精品网站在线播放gif| 亚洲无av在线中文字幕| 久久亚洲国产成人| 懂色av中文一区二区三区天美| 亚洲女人天堂av| 日本久久中文字幕| 国产精品视频导航| 国产一区二区三区四区福利| 久久精品美女视频网站| www.欧美视频| 欧美中文在线视频| 日韩欧美在线免费观看| 91精品国产99| 精品日本高清在线播放| 国产亚洲精品一区二555| 亚洲欧美在线一区| 色偷偷91综合久久噜噜| 欧美成人激情在线| 粗暴蹂躏中文一区二区三区| 欧美自拍大量在线观看| 在线视频免费一区二区| 欧美性猛交丰臀xxxxx网站| 欧美午夜片在线免费观看| 色综合天天狠天天透天天伊人| 国产视频亚洲精品| 性欧美长视频免费观看不卡| 亚洲欧美国产va在线影院| 综合网日日天干夜夜久久| 国产欧美日韩综合精品| 国产精品电影久久久久电影网| 亚洲国产91色在线| 2019国产精品自在线拍国产不卡| 亚洲跨种族黑人xxx| 久久艳片www.17c.com| 亚洲天堂免费观看| 97香蕉超级碰碰久久免费的优势| 久久99视频免费| 日韩av中文字幕在线播放| 亚洲精品国产精品乱码不99按摩| 亚洲国产一区二区三区四区| 欧美夫妻性生活xx| 国产视频999| 亚洲精品久久久久久久久久久久久| 国产精品日韩欧美大师| 欧美日韩亚洲高清| 粗暴蹂躏中文一区二区三区| 久久精品小视频| 国产视频精品在线| 国内精品小视频| 韩国精品美女www爽爽爽视频| 一本色道久久88综合亚洲精品ⅰ| 欧美日韩在线免费观看| 亚洲a区在线视频| 日韩国产精品亚洲а∨天堂免| 国产主播在线一区| 精品国产福利视频| 国产精品永久在线| 欧美另类99xxxxx| 国产精品久久久久久超碰| 国内精品模特av私拍在线观看| 久久久久久久久久久国产| 自拍偷拍亚洲精品| 欧美视频专区一二在线观看| 91亚洲国产成人久久精品网站| 久久国产精品影片| 国产日产久久高清欧美一区| 国产精品麻豆va在线播放| 中日韩午夜理伦电影免费| 亚洲午夜久久久影院| 欧美色道久久88综合亚洲精品| 欧美大秀在线观看| 日韩欧美在线第一页| 久久精品国产亚洲一区二区| 精品女同一区二区三区在线播放| 91久久精品一区| 欧美激情视频给我| 国产精品影院在线观看| 国产精品久久一区主播| 亚洲欧美色婷婷| 国产精品久久久久99| 亚洲欧美国内爽妇网| 国产精品吹潮在线观看| 欧美有码在线观看视频| 成人激情电影一区二区| 久久精品视频中文字幕| 国产成人精品最新| 久久99精品国产99久久6尤物| 日韩一区在线视频| 欧美精品国产精品日韩精品| 日韩av综合中文字幕| 精品少妇v888av| 欧美日韩在线视频一区二区| 粉嫩老牛aⅴ一区二区三区| 亚洲成人国产精品| 91夜夜揉人人捏人人添红杏| 国产97在线|亚洲| 久久久久久亚洲精品中文字幕| 日韩欧美在线字幕| 久久精品国产久精国产思思| 伊人久久久久久久久久| 欧美小视频在线观看| 日韩av在线免播放器| 亚州国产精品久久久| 日本欧美精品在线| 国产成人中文字幕| 亚洲性av网站| 亚洲女人天堂色在线7777| 欧美日韩在线免费观看| 亚洲精品美女在线| 久久青草福利网站| 欧美一区亚洲一区| 亚洲男人天堂视频| 日韩动漫免费观看电视剧高清| 日韩欧美在线第一页| 91久久久久久久久| 国模gogo一区二区大胆私拍| 亚洲美女福利视频网站| 国产精品亚洲激情| 国产精品户外野外| 成人久久久久久久| 久久久久亚洲精品国产| 日韩欧美成人免费视频| 97久久久免费福利网址| 亚洲视频欧洲视频| 亚洲xxxx18| 亚洲理论片在线观看|