微信小程序python解析获取用户手机号_微信小程序获取用户手机号

2018年9月27日星期四

小程序获取用户手机号登录

使用方法

需要将< button >组件open-type的值设置为getPhoneNumber,当用户点击并同意之后,可以通过bindgetphonenumber事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合session_key以及app_id进行解密获取手机号。

注意:获取微信用户绑定的手机号,需先调用login接口。

在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免login 刷新登录态。

通过bindgetphonenumber绑定的事件来获取回调。回调的参数有三个,

errMsg:用户点击取消或授权的信息回调。

iv:加密算法的初始向量(如果用户没有同意授权则为undefined)。

encryptedData: 用户信息的加密数据(如果用户没有同意授权同样返回undefined)

716721e1df45

encryptedData 解密后为以下 json 结构

716721e1df45App({

onLaunch: function () {

// 登录

wx.login({

success: function (res) {

var code = res.code;

wx.request({

url: 'https://*****.com',

method: 'POST',

data: {

js_code: code

}, //传递后台code值

header: {

'Accept': "*/*"

},

success: function (res) {

var wechat = {

openid: res.data.openid,

thirdkey: res.data.session_key

}

wx.setStorage({  //返回openid session_key  本地缓存

key: 'wechat',

data: wechat

})

}

})

},

fail: function (res) {

console.log("登陆失败")

}

})

}

})

//login.wxml登录

// login.jsgetPhoneNumber: function (e) {

var that = this;

// 拒绝授权

if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {

wx.showModal({

title: '提示',

showCancel: false,

content: '未授权您将无法登陆',

success: function (res) { }

})

} else {

// 接受授权

wx.getStorage({

key: 'wechat',

success: function (res) {

var openid = res.data.openid;//openid

var thirdkey = res.data.thirdkey;//session_key

wx.request({

url: 'https://www.*****.com',

method: 'POST',

data: {

encryptedData: e.detail.encryptedData,

iv: e.detail.iv,

openid: openid,

thirdkey: thirdkey

},

header: {'Accept': "*/*"},

success: function (res) {

console.log("提交到服务器成功了~~~~手机号登录")

console.log(res.data)

},

fail: function (res) {

console.log("提交到服务器失败了")

}

})//end of wx.request

}

})

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值