TypeScript: miniProgram 获取用户信息




  
    
      
        
      
      
    
    
      
      
       请使用1.4.4及以上版本基础库 
    
    
      
      {{userInfo.nickName}}
    
  
  
    {{motto}}
  
  
  {{phone}}

// index.ts
// 获取应用实例
const app = getApp()

Page({
  data: {
    motto: 'Hello World,涂聚文',
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false
   
  
  },
  // 事件处理函数
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs',
    })
  },
  onLoad() {
    // @ts-ignore
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },
  getUserProfile() {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  getUserInfo(e: any) {
    // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
    console.log(e)
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
  
  getPhoneNumber(e:any)
  {
   
    console.log(e.detail.encryptedData);//数据 解密了才可以得到数据
    //console.log(e.detail.encryptData);
    console.log(e.detail.iv);
    console.log("开始");
    var crypto = require('../../utils/crypto.js');
   console.log(crypto.encrypted("福田区"))//加密
   console.log(crypto.decrypted("m6pCKPCLF+3mtABJqGC13g=="))//解密

   //console.log(crypto.decrypted(e.detail.iv))
    


    wx.cloud.callFunction(
      {
        name:'getPhone',
        data:{
           cloudID:e.detail.cloudID
        }
      }
    ).then(es=>{
      console.log("读取:",es.result);
      console.log(es.result?.link);
      
     // this.setData({phone:'手机号码是:'+ es.result.list[0].data.getPhoneNumber})
    }).catch(err=>{console.log('erro',err)})
  }


})
//crypto.js
//https://github.com/gwjjeff/cryptojs
var CryptoJS = require('crypto-js.js');
// 密钥 16 位
var key = 'skdidhjdksle2345';
// 初始向量 initial vector 16 位
var iv = 'skdidhjdksle2345';
// key 和 iv 可以一致
key = CryptoJS.enc.Utf8.parse(key);
iv = CryptoJS.enc.Utf8.parse(iv);
//加密
function encrypted(param) {
  var encrypted = CryptoJS.AES.encrypt(param, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  encrypted = encrypted.toString();
  return encrypted;
}
//解密
function decrypted(param) {
  var decrypted = CryptoJS.AES.decrypt(param, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  });
  decrypted = CryptoJS.enc.Utf8.stringify(decrypted);
  return decrypted;
}
module.exports = {
  encrypted: encrypted,
  decrypted: decrypted,
}