700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 微信小程序授权登录(含获取基本信息及绑定的手机号)

微信小程序授权登录(含获取基本信息及绑定的手机号)

时间:2023-10-18 04:31:41

相关推荐

微信小程序授权登录(含获取基本信息及绑定的手机号)

1、授权获取微信个人信息

wx.getUserProfile({desc: '展示用户信息',success: (res) => {this.setData({nickName: res.userInfo.nickName,avatarUrl: res.userInfo.avatarUrl})},fail: res => {wx.showToast({title: '您已拒绝授权,请重新点击并授权',icon:'none'})}})

2、调用wx.login()获取临时登录凭证code

wx.login({success: res => {this.setData({jsCode: res.code})}})

3、用code调用接口换取用户唯一标识openId、用户在微信开放平台账号下的唯一标识unionId和会话密钥session_key

(1)前端获取

wx.request({//微信开发者工具勾选-不校验合法域名url: 'https://api./sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code',data:{},header:{'content-type':'json'},success:function(res) {console.log(res);}})

注意点:正常开发中不会通过这种方法获取,会通过后台获取调用微信公众平台接口获取openid,为了保护一些敏感信息如appid,secret密钥不被泄露。前端可以用来在测试中使用从而达到效果。

(2)调用后台接口获取

getOpenId({jsCode:this.data.jsCode}).then(res => {if (res.data.code === 1) {this.setData({openid: res.data.data.openid,sessionKey: res.data.data.sessionKey,unionid: res.data.data.unionid})}})

4、授权获取手机号

(1)使用button按钮触发授权弹窗

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号码</button>

getPhoneNumber(e){console.log(e.detail.iv);//加密算法的初始向量console.log(e.detail.encryptedData);//完整用户信息的加密数据console.log(e.detail.code);//手机号获取凭证}

(2)通过参数encryptedDataivsessionKey或者是codesessionKey请求后端接口,后端进行解密然后返回用户手机号

注意:如果通过code来获取,用微信开发者工具测试的时候,可能会显示不出code,这是调试基础库的原因,在真机调试上不会出现问题。本地调试的时候将调式基础库修改为2.22.1版本即可。

常见的报错信息如下:getPhoneNumber:fail no permission

说明没有进行微信认证

问题描述及相关讨论: https://developers./community/develop/doc/000604480f0470b458364596051800

登录小程序后台:微信公众平台,找到设置中的基本设置,在基本信息中有微信认证

关于认证的费用问题:

1、独立申请的小程序账号认证费用是只收取一次300元永久认证费用,第二年以后每年都不会收取认证费用。因为小程序账号认证不需要年审。

2、如果是通过微信公众号注册认证的小程序账号绑定了公众号,是每年需要收取微信公众号的认证费用,也是不收取小程序账号的认证费用。

5、绑定微信

只需授权然后使用获取的openidunionidsessionKey调用后端接口

wx.getUserProfile({desc: '展示用户信息',success: (res) => {let data = {}data.openid = this.data.openiddata.unionid = this.data.unioniddata.sessionKey = this.data.sessionKeyminiBind(data).then(res => {if (res.data.code === 1) {wx.showToast({title: '授权成功!'}) } else {wx.showToast({icon: "none",title: res.data.msg,})}})}})

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。