网页手机号抓取程序( 微信小程序开发之获取用户手机号码,文中示例代码介绍)
优采云 发布时间: 2021-09-17 07:01网页手机号抓取程序(
微信小程序开发之获取用户手机号码,文中示例代码介绍)
微信小程序开发,获取用户手机号(PHP接口解密)
更新时间:2020年5月17日16:33:10作者:逍遥云天
本文文章主要介绍微信applet的开发,获取用户手机号。通过实例代码对其进行了详细的介绍,对大家的学习或工作有一定的参考价值。有需要的朋友,让我们和小编一起学习
稍后制作微信小程序,获取用户微信绑定的手机号。小程序开发文档中提供的获取移动电话号码的接口(getphonenumber())返回密文,需要在服务器上解密。然而,该官员提供的开发文件与以往一样混乱。如果不全面了解applet开发文档,理解解密过程仍然有点困难。这里,小程序从请求用户授权获取移动电话号码到获取移动电话号码的明文的整个过程被链接以便于快速理解,如下所示:
一.前端相关操作:
1.请求用户授权获取手机号码:
由于用户需要主动触发启动接口获取手机号,所以API没有调用此功能,需要点击组件触发,如下图:
wxml:
获取手机号码
js:
Page({
getPhoneNumber: function(e) {
if(e.detail.errMsg == "getPhoneNumber:fail user deny") return; //用户允许授权
console.log("lv", e.detail.iv); //包括敏感数据在内的完整用户信息的加密数据,需要解密
console.log(e.detail.encryptedData); //加密算法的初始向量,解密需要用到
......
}
})
2.access小程序登录界面:
小程序调用Wx。Login()获取临时登录证书代码并将其发送到开发人员服务器
Page({
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv) //包括敏感数据在内的完整用户信息的加密数据,需要解密
console.log(e.detail.encryptedData) //加密算法的初始向量,解密需要用到
wx.login({
success: res => {
if(res.code){
console.log(res.code)
}
}
})
}
})
3.访问腾讯服务器登录证书验证界面:
注意:官方建议将其放在服务器端。这里,为了方便起见,将其放在前端请求上
请注意以下参数:
阿皮德
小程序唯一ID
秘密
applet的应用程序秘密
js_uu代码
登录时获取的代码
格兰特型
填写授权代码
//2. 访问登录凭证校验接口获取session_key
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "xxxxxxxx",
'secret': "xxxxxxxx",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data) {
console.log("data", data.data.session_key)
},
fail: function(err) {
console.log(err);
}
})
4.在您自己的服务器上解密
注:解密接口可以使用腾讯官方演示进行修改。具体的转换将在后面描述
//3. 解密
wx.request({
url: 'http://xxxxx.com/demo/demo.php',//腾讯官方demo改造的接口页面
data: {
'encryptedData': encodeURIComponent(e.detail.encryptedData),//需要进行编码
'iv': e.detail.iv,
'session_key': data.data.session_key
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
}, // 设置请求的 header
success: function(data2) {
console.log(data2.data.phoneNumber)
if(data2.statusCode == 200) {
self.setData({
phone: data2.data.phoneNumber
})
}
},
fail: function(err) {
console.log(err);
}
})
JS部分的总体代码如下:
getPhoneNumber: function (e) {
if (e.detail.errMsg == "getPhoneNumber:fail user deny") return;
//用户允许授权
console.log("lv", e.detail.iv);
console.log(e.detail.encryptedData);
wx.showLoading()
var self=this
//1. 调用登录接口获取临时登录code
wx.login({
success: res => {
if(res.code){
//2. 访问登录凭证校验接口获取session_key、openid
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "wxcc41e47562b08129",
'secret': "50e4379d67a6860d18157c53dc6ac3c2",
'js_code': res.code,
'grant_type': "authorization_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: 'http://qdy8.gotoip4.com/demo/demo.php',
data: {
'encryptedData': e.detail.encryptedData,
'iv': e.detail.iv,
'session_key': data.data.session_key
},
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
})
}
},
fail: function (err) {
console.log(err);
}
})
}
},
fail: function (err) {
console.log(err);
}
})
}
}
})
}
二.后端接口:
微信官方提供多种编程语言的示例代码(示例代码)。每种语言类型的接口名称相同,调用方法可以参考示例
如果你只是学习和研究,你可以买一个经济的虚拟主机,每年只需几十美元。然而,这个虚拟主机的大部分是PHP,所以这里我们以PHP为例来转换和接收前端请求
下载官方演示后,结构如下:
Transform demo.php:
将PHP的三个演示文件上传到虚拟主机:
然后您可以直接访问演示。PHP文件作为接口
三.易发生异常:
1.访问微信登录凭证验证界面获取会话密钥,如果报告以下错误,需要清除所有缓存并重新编译(更改appid后应该是开发工具的坑,如果不清除所有缓存会发生此错误):
无效代码,提示:[请求id:CPAsWa0325ha57]
2.decryption接口返回-41003,然后检查接口参数:
这篇关于微信applet开发的文章中的文章就是为了获取用户的手机号码(PHP接口解密)。有关获取用户移动电话号码的更多相关小程序,请搜索上一个脚本主页的文章或继续浏览下面的相关文章。我希望你将来会更多地支持ScriptHome