小程序 獲取用戶信息及手機號碼

效果圖:html

      

 

1.login.wxmljson

1 <view class='padding flex flex-direction'>
2   <button class="cu-btn bg-blue margin-tb-xs lg"  hidden="{{hid1}}"  open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">受權</button>
3   <button class="cu-btn bg-blue margin-tb-xs lg"  hidden="{{hid2}}"  open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" >進入</button> 
4 </view>

2.app.js小程序

wx.login({
      success: res => {
      
          // 發送 res.code 到後臺換取 openId, sessionKey, unionId
          if (res.code) {
            console.log("code========" + JSON.stringify(res));
            //發起網絡請求
            wx.request({
              url: 'https://....../api/OnLogin/get',
              data: {
                code: res.code
              },
              // header: { 'content-type': 'application/json' },
              success: data => {
                console.log("data" + JSON.stringify(data.data));
                this.globalData.session_key = data.data.session_key;
                this.globalData.openid = data.data.openid;
                console.log("openid" + this.globalData.openid);
              }
            })
          } else {
            console.log('登陸失敗!' + res.errMsg)
          }
       
        }
  
    })

3.api接口api

 public object Get(string code)
        {
            string cod = code;
            string html = string.Empty;
            string url = "https://api.weixin.qq.com/sns/jscode2session?appid=「小程序appid」&secret="小程序密鑰"&js_code=" + cod + "&grant_type=authorization_code";
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "GET";
            request.ContentType = "text/html;charset=UTF-8";
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            Stream ioStream = response.GetResponseStream();
            StreamReader sr = new StreamReader(ioStream, Encoding.UTF8);
            html = sr.ReadToEnd();
            sr.Close();
            ioStream.Close();
            response.Close();
            RepParamrep rep = JsonConvert.DeserializeObject<RepParamrep>(html);
            return rep;
        }
 
// 解析手機號碼

public string Get(string encryptedData, string iv, string session_key)
 { 
            string _telPhone = getPhoneNumber(encryptedData, iv, session_key); return _telPhone; } private string getPhoneNumber(string encryptedData, string IV, string Session_key) { try { byte[] encryData = Convert.FromBase64String(encryptedData);  
                RijndaelManaged rijndaelCipher = new RijndaelManaged(); rijndaelCipher.Key = Convert.FromBase64String(Session_key); 
                rijndaelCipher.IV = Convert.FromBase64String(IV);
                rijndaelCipher.Mode = CipherMode.CBC; rijndaelCipher.Padding = PaddingMode.PKCS7; ICryptoTransform transform = rijndaelCipher.CreateDecryptor(); byte[] plainText = transform.TransformFinalBlock(encryData, 0, encryData.Length); string result = Encoding.Default.GetString(plainText);                
                dynamic model = Newtonsoft.Json.Linq.JToken.Parse(result) as dynamic; return model.phoneNumber; } catch (Exception ex) {
                return ""; } }

 

4..login.js網絡

Page({
  data: {
    userPhone: '',
    userNicheng:'',
    hid1:false,
    hid2: true
  },
 bindGetUserInfo:function(e){    
    this.setData({
     userNicheng: e.detail.userInfo.nickName,
     hid1: true,
     hid2: false
   })
  },
  getPhoneNumber: function(e) {
    var that = this;
    console.log("getPhoneNumberok" + e.detail.errMsg);
    if (e.detail.errMsg == "getPhoneNumber:ok") {
      wx.request({
        url: 'https://..../api/OnLogin/get',
        data: {
          encryptedData: e.detail.encryptedData,
          iv: e.detail.iv,
          session_key: app.globalData.session_key

        },
        method: "get",
        success: function(res) {        
          that.setData({
            userPhone: res.data
          })
        wx.navigateTo({
         url: '../index/index
              });
          });          
        }
      })
    }
  },
相關文章
相關標籤/搜索