网页手机号抓取程序(这是官方服务端文档获取开放数据云开发的应用和应用)
优采云 发布时间: 2022-01-06 15:08网页手机号抓取程序(这是官方服务端文档获取开放数据云开发的应用和应用)
小程序获取用户手机号有一些限制:
目前该接口对非个人开发者和认证小程序(不包括境外实体)开放,即只能使用国内认证企业账户。必须是点击按钮触发,包括头像和客服,都需要点击按钮触发。需要先调用wx.login接口获取code。后端使用代码调用auth.code2Session获取session_key,然后对获取到的encryptedData进行解密得到电话号码。
详细介绍请参考官网文档获取手机号
您需要在单击按钮之前调用 wx.login 以获取电话号码。代码是时效的,session_key也是时效的。不能像openId一样获取到本地缓存。需要调用wx.checkSession检查登录状态,判断是否需要再次调用wx.login获取session_key。
这是官方文档服务器获取开放数据的第一种方式。这次主要讲第二种方法,通过云调用直接获取开放数据云开发。
我们在写小程序或者app的时候,一般都会把前端和后端分开。前端写接口,后端写接口,前端用后端接口处理数据,做到各司其职,保证质量和效率。但是有时候前端的人想写自己的个人产品,却没有后端开发,也没有服务器。我想很多前端的人都有这个想法。几年前,他们研究了LeanCloud的云存储,通过rest api直接操作数据库。,虽然比直接学习后端开发简单很多,但是学习还是要花不少时间的。小程序云开发类似于LeanCloud的云存储。入门要简单得多,文档也很详细。
创建新项目时,可以选择小程序·云开发,这样就可以直接创建小程序·云开发模板。
新项目
查看目录,您会发现与未使用云服务创建的小程序目录存在一些差异。
云开发目录
小程序目录
不同的是在云开发目录下多了一个cloudfunctions目录,小程序文件都在小程序目录下。
同时project.config.json配置文件有更多的云开发目录配置
"miniprogramRoot": "miniprogram/",
"cloudfunctionRoot": "cloudfunctions/",
这时候云服务还是不可用,点击左上角的云开发按钮
云开发
系统将要求您创建环境名称和环境 ID。环境ID创建后不可修改。这里的官方环境名称文档推荐了易于区分测试和发布的开发环境和生产环境名称。
不使用云服务创建的小程序如何使用云开发
首先在根目录下创建两个文件夹,cloudfunctions和miniprogram,其他名字也是可以的。
然后将之前小程序目录下除project.config.json外的文件拖到小程序目录下,添加到project.config.json配置中
"miniprogramRoot": "miniprogram/",
"cloudfunctionRoot": "cloudfunctions/",
添加后
点击左上角的云开发按钮,创建环境。首次打开云环境后,需要等待10分钟左右,才能正常使用云API。
右键云开发目录查看当前环境
云开发
在小程序上开始使用云能力之前,需要调用app.js中的wx.cloud.init方法完成云能力初始化
//app.js
App({
onLaunch: function () {
//初始化云开发
wx.cloud.init({
traceUser: true
})
}
})
右键单击 cloudfunctions 文件夹并选择 New Node.js Cloud Function,名称为 getPhone。
新建后默认会生成获取applet上下文的云函数cloud.getWXContext()。如果需要获取openId和unionId,可以直接使用这个云函数。我们将其修改为获取手机号码的云功能。修改后必须右键上传部署。
获取电话
在getPhoneNumber中调用getPhone云函数,小程序端同时支持Callback风格和Promise风格的调用。
// 获取手机号
getPhoneNumber: function (event) {
let cloudID = event.detail.cloudID //开放数据ID
if (!cloudID) {
app.showToast('用户未授权')
return
}
//loading
app.showLoading()
//获取手机号
wx.cloud.callFunction({
name: 'getPhone',
data: {
cloudID: cloudID
}
}).then(res => {
app.hideLoading()
let phone = res.result.list[0].data.phoneNumber
if (phone) {
wx.setStorageSync('phone', phone)
//更新UI
this.setData({
phone: phone
})
}
this.triggerEvent('applyTap')
}).catch(error => {
app.hideLoading()
this.triggerEvent('applyTap')
})
},
参考
5行代码获取小程序用户手机号
按钮
获取手机号码
服务器访问开放数据
资源环境
初始化
我的第一个云功能
Cloud.getOpenData()