在网上搜索时,大部分微信小程序云开发获取手机号码的例子还都是需要通过code
获取session_key
来解密信息取得手机号码,总感觉哪里不对,官网上都已经说过,云开发是自动鉴权的,不应该还要解密,因此下面介绍如何使用云开发获取用户信息数据。
具体步骤
1,页面 cellphone.wxml
cellphone.wxml1
| <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
|
2,文件cellphone.js
cellphone.js1 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,云函数 openapi
的index.js
index.js1 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
数据如下
res1 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
和加密解密啥事,即可获取到用户的手机号。
参考链接