一、前言
微信小程序開發(fā)筆記——導(dǎo)讀
- 大部分微信小程序開發(fā)者都會(huì)有這樣的需求:獲取小程序用戶的手機(jī)號碼。
- 但是,因?yàn)樾〕绦蛴脩舻氖謾C(jī)號碼屬于重要信息,為了安全,所以需要如下一系列較為復(fù)雜的方法和步驟。
- 我前期主要通過小程序云的方法獲取用戶手機(jī)號碼,后面因?yàn)槲⑿耪咦兏〕绦蛟撇辉偬峁┟赓M(fèi)版本,最低每月也要收費(fèi)19元。
- 所以,我才轉(zhuǎn)用方法二和方法三。否則方法一小程序云的方法是最簡單的。
微信小程序開發(fā)筆記 進(jìn)階篇④——getPhoneNumber 獲取用戶手機(jī)號碼(小程序云)
微信小程序開發(fā)筆記 進(jìn)階篇⑤——getPhoneNumber 獲取用戶手機(jī)號碼(基礎(chǔ)庫 2.21.2 之前)
微信小程序開發(fā)筆記 進(jìn)階篇⑥——getPhoneNumber 獲取用戶手機(jī)號碼(基礎(chǔ)庫 2.21.2 之后)
- 首先確保基礎(chǔ)庫版本在2.21.2之后
二、前端代碼wxml
- 必須要有這個(gè)button,并且用戶點(diǎn)擊了,才能有下一步
<button type="default" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" class="weui-vcode-btn" wx:else>獲取手機(jī)號</button>
三、前端代碼js
-
bindgetphonenumber="getPhoneNumber"
按鈕的回調(diào)函數(shù)
getPhoneNumber(e) {
var_this = this
console.log("getPhoneNumber", e)
keyueliSdk.getPhoneNumber({
code: e.detail.code,
appId: app.globalData.appId,
},
(res) => {
console.log("getPhoneNumber", "success", res)
_this.setData({
mobile: res.data.data.phoneNumber
})
},
(res) => {
console.log("getPhoneNumber", "fail", res)
})
},
-
keyueliSdk.js
接口工具類
//獲取用戶手機(jī)號碼
const getPhoneNumber = (data, success, fail) => {
console.log("getPhoneNumber", data)
request(
endpoint + "/v1/app/user/getPhoneNumber", {
// 'content-type': 'application/x-www-form-urlencoded'
'content-type': 'application/json'
},
data,
"POST",
success, fail
)
}
module.exports = {
getPhoneNumber: getPhoneNumber,
}
四、后端java
controller.java
@ApiOperation("查詢用戶手機(jī)號碼")
@PostMapping("/getPhoneNumber")
public AjaxResult getPhoneNumber(@ApiParam() @RequestBody AppCode appCode)
{
log.info(appCode.toString());
return AjaxResult.success(loginService.getPhoneNumber(appCode));
}
loginService.java
public JSONObject getPhoneNumber(AppCode appCode){
if(!WXUtils.checkAppId(appCode.getAppId())){
log.error("appId異常: "+ appCode.toString());
throw new CustomException("AppId 異常");
}
return WXUtils.getPhoneNumber(appCode.getCode(), appCode.getAppId());
}
WXUtils.java
public static JSONObject getPhoneNumber(String code, String appId){
try {
String objectStr = HttpUtil.post(String.format("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s",getAccessToken(appId)), "{\"code\":\""+code+"\"}");
log.info(objectStr);
JSONObject jsonObject = JSON.parseObject(objectStr);
return jsonObject.getJSONObject("phone_info");
}catch (Exception e){
e.printStackTrace();
log.error("微信code解析異常", e.getMessage());
}
return null;
}
public static String getAccessToken(String appId){
try {
String objectStr = HttpUtil.get(String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",appId, getAppSecret(appId)));
log.info(objectStr);
JSONObject jsonObject = JSON.parseObject(objectStr);
return jsonObject.getString("access_token");
}catch (Exception e){
e.printStackTrace();
log.error("微信code解析異常", e.getMessage());
}
return null;
}
五、程序流程
文章來源:http://www.zghlxwxcb.cn/news/detail-778922.html
六、參考
- phonenumber.getPhoneNumber
- auth.getAccessToken
- 獲取手機(jī)號 | 微信開放文檔
覺得好,就一鍵三連唄(點(diǎn)贊+收藏+關(guān)注)文章來源地址http://www.zghlxwxcb.cn/news/detail-778922.html
到了這里,關(guān)于微信小程序開發(fā)筆記 進(jìn)階篇⑥——getPhoneNumber 獲取用戶手機(jī)號碼(基礎(chǔ)庫 2.21.2 之后)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!