sessionkey 微信小程序获取_微信小程序获取用户手机号,利用云开发云函数拿到session_key...

本文介绍了如何在微信小程序中获取用户手机号,通过云开发云函数`getToken`实现。详细步骤包括客户端调用`getPhoneNumber`获取加密数据,然后在服务端使用`request-promise`模块请求微信API获取`session_key`,并使用自编译的`WXBizDataCrypt`解密用户信息。文中提供了相关代码示例和下载资源。
摘要由CSDN通过智能技术生成

客户端

getPhoneNumber: function (e) {

var that = this;

if (!e.detail.errMsg || e.detail.errMsg != "getPhoneNumber:ok") {

wx.showModal({

content: '不能获取手机号码',

showCancel: false

})

return;

}

wx.showLoading({

title: '获取手机号中...',

})

wx.cloud.callFunction({

name: 'getToken', // 对应云函数名

data: {

encryptedData: e.detail.encryptedData,

iv: e.detail.iv,

sessionCode: app.globalData.sessionCode // 这个通过wx.login获取,去了解一下就知道。这不多描述

},

success: res => {

wx.hideLoading()

// 成功拿到手机号,跳转首页

wx.switchTab({

url: '../index/index' // 这里是要跳转的路径

})

},

fail: err => {

console.error(err);

wx.showToast({

title: '获取手机号失败',

icon: 'none'

})

}

})

}

服务端

步骤1: 新建node.js云函数getToken

image.png

步骤2:因为需要进行网络请求,这里使用request库

右击getToken函数名,选择在终端中打开

image.png

步骤3.下载 request 或 request-promise 模块(request-promise模块,可以使用promise,async和await)

命令行:

npm install --save request

npm install --save request-promise

如成功下载,则可见

image.png

步骤4:getToken下的index.js文件中

// 云函数入口文件

const cloud = require('wx-server-sdk')

const requestpromise = require('request-promise');

var WXBizDataCrypt = require('./RdWXBizDataCrypt') // 用于手机号解密

cloud.init()

// 云函数入口函数

exports.main = async (event, context) => {

// 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)

const wxContext = cloud.getWXContext()

const appid = wxContext.APPID

const AccessToken_options = {

method: 'GET',

url: 'https://api.weixin.qq.com/sns/jscode2session',

qs: {

appid:wxContext.APPID,

secret:'xxxxxxxxxxxxxxxxxxx', // 微信开发后台可生成,唯有微信认证过的国内主体才可有

grant_type: 'authorization_code',

js_code: event.sessionCode // 小程序中获取过来的

},

json: true

};

const resultValue = await requestpromise (AccessToken_options);

const pc = new WXBizDataCrypt(appid, resultValue.session_key) // -解密第一步

const data = pc.decryptData(event.encryptedData, event.iv) // 解密第二步

return { data }

}

这里的WXBizDataCrypt文件纯js写的,非官方给出的java,node,php等后端语言的demo,js文件我放

文件网盘里了,有需要的自行下载,请点击这里 提取码:i2ve

具体放置的位置如步骤3所示

至此,小程序便可得到解密后的用户手机号,

转载请注明出处,如有不同见解,欢迎私信讨论,谢谢

这里多谢@小文鱼 简友替我指出一个小错误,appid,没在最外面定义,已加回!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值