微信小程序获取手机号登录流程

微信小程序获取手机号登录流程

首先前端使用wx.login 获取code

   wx.login({
            success(res) {
                if (res.code) {
                    that.setData({
                        code: res.code
                    });
                }
            },
            fail(res) {
                console.log('获取凭证失败!' + res);
            }
        })

在wxml文件里面的加上按钮,通过按钮触发getPhoneNumber方法,button的open-type="getPhoneNumber"加上

 <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">

在getPhoneNumber(e)函数里面
前端调取后端给的接口把code传过去,后端使用 code 换取 openid、unionid、session_key 等信息;

 request.request('jscode2session', {
            code: this.data.code
        }, res => {
            if (res.status == 1) {
                that.setData({
                    session_key: encodeURIComponent(res.data.session_key)
                });
            }
 })

记住:发送请求时前端传参如果用encodeURIComponent()转码,后端也一定要用转码,前端如果不用后端也不用,一定要前后端保持一致,不然后端拿到之后请求微信接口会报错!!!

然后通过getPhoneNumber(e)函数的e这个对象里面获取iv和encryptedData;

 var iv = encodeURIComponent(e.detail.iv)
 var encryptedData = encodeURIComponent(e.detail.encryptedData);

因为第一次wx.login()拿到的code为了获取session_key已经使用过了,所以后端获取手机号所需的code需要再次通过wx.login()获取一下;
至此后端通过微信获取手机号所需要的四个参数都已经凑齐wx_code、session_key、encryptedData、iv;

wx.login({
      success(res) {
        if (res.code) {
          // 成功回调获取用户解密手机号
          request.request('login', {
            wx_code: res.code,
            session_key: that.data.session_key,
            encryptedData: encryptedData,
            iv: iv
          }, res => {
            console.log('打印后端返回的值')
          }, fail => {})
        }
      }
    })

至此微信小程序获取手机号前后端交互完成!!!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

“诗和远方”

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值