微信小程序云开发获取用户手机号

在网上搜索时,大部分微信小程序云开发获取手机号码的例子还都是需要通过code获取session_key来解密信息取得手机号码,总感觉哪里不对,官网上都已经说过,云开发是自动鉴权的,不应该还要解密,因此下面介绍如何使用云开发获取用户信息数据。

具体步骤

1,页面 cellphone.wxml

cellphone.wxml
1
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>

2,文件cellphone.js

cellphone.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Page({
getPhoneNumber(e) {
console.log(e.detail);
wx.cloud
.callFunction({
name: 'openapi',
data: {
action: 'getcellphone',
id: e.detail.cloudID,
},
})
.then((res) => {
console.log('res: ', res);
});
},
});

3,云函数 openapiindex.js

index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init();
// 云函数入口函数
exports.main = async (event, context) => {
switch (event.action) {
case 'getcellphone': {
return getCellphone(event);
}
default: {
return;
}
}
};

async function getCellphone(event) {
const res = await cloud.getOpenData({
list: [event.id],
});
return { res, event };
}

调用后res数据如下

res
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"list": [
{
"cloudID": "***********",
"data": {
"phoneNumber": "****", // 用户绑定的手机号(国外手机号会有区号)
"purePhoneNumber": "******", // 没有区号的手机号
"countryCode": "86", // 区号
"watermark": {
"timestamp": 1612332238,
"appid": "********"
}
}
}
],
"errMsg": "getOpenData:ok",
"errCode": 0
}

全程不涉及code,session_key和加密解密啥事,即可获取到用户的手机号。

参考链接

微信小程序云开发获取用户手机号

https://hailangya.com/articles/2021/02/03/wx-get-cellphone/

作者

Sea

发布于

2021-02-03

更新于

2023-01-10

许可协议

评论