返回

如何从微信小程序中获取用户手机号?超详细解读!

前端

在微信小程序中获取用户手机号:新手教程

简介

微信小程序是众多企业和开发者的首选,原因在于其开发成本低、功能强大、跨平台等优势。但在实际开发中,开发者们经常会遇到获取用户手机号的场景,例如用户注册、登录和支付。本文将详细介绍两种方法,帮助开发者轻松在微信小程序中获取用户手机号。

一、新版获取用户手机号流程

新版获取用户手机号的流程更安全、更便捷,但需要前端授权两次。

步骤 1:注册小程序和配置信息

首先,在微信公众平台注册一个小程序,并配置相关信息,包括小程序名称、开发者信息、业务类型等。

步骤 2:添加授权代码

在小程序中添加如下代码:

wx.login({
  success: (res) => {
    // 获取用户授权码code
    const code = res.code;
    // 获取手机授权码code
    wx.getPhoneNumber({
      success: (res) => {
        // 获取用户手机授权码code
        const phoneCode = res.code;
        // 将code和phoneCode都传给后端
        wx.request({
          url: 'https://api.example.com/auth/login',
          method: 'POST',
          data: {
            code,
            phoneCode
          },
          success: (res) => {
            // 获取登录凭证token
            const token = res.data.token;
            // 将token存储到本地
            wx.setStorageSync('token', token);
          }
        });
      }
    });
  }
});

步骤 3:后端获取openid和手机号

在后端,使用code和phoneCode获取openid和手机号:

# 获取openid
openid = await getOpenid(code)
# 获取手机号
phone = await getPhoneNumber(phoneCode)
# 将openid和手机号存储到数据库
await saveUser(openid, phone)
# 返回登录凭证token
return generateToken(openid, phone)

二、老版获取用户手机号流程

老版获取用户手机号的流程较简单,但安全性较差,需要前端授权一次。

步骤 1:注册小程序和配置信息

同新版流程步骤 1。

步骤 2:添加授权代码

在小程序中添加如下代码:

wx.login({
  success: (res) => {
    // 获取授权码code
    const code = res.code;
    // 将code传给后端
    wx.request({
      url: 'https://api.example.com/auth/login',
      method: 'POST',
      data: {
        code
      },
      success: (res) => {
        // 获取登录凭证token
        const token = res.data.token;
        // 将token存储到本地
        wx.setStorageSync('token', token);
      }
    });
  }
});

步骤 3:后端获取openid和手机号

在后端,使用code获取openid和sessionKey:

# 获取openid和sessionKey
{ openid, sessionKey } = await getOpenidAndSessionKey(code)
# 获取手机号
phone = await getPhoneNumber(iv, encryptedData, sessionKey)
# 将openid和手机号存储到数据库
await saveUser(openid, phone)
# 返回登录凭证token
return generateToken(openid, phone)

结语

以上两种方法都可以帮助开发者在微信小程序中获取用户手机号。新版方法更加安全,但需要前端授权两次,适合对安全要求较高的场景。老版方法更加简单,但安全性较差,适合对安全要求不高的场景。开发者可以根据实际需要选择使用哪种方法。

常见问题解答

  1. 为什么新版流程需要前端授权两次?

答:新版流程通过前端获取用户手机授权码code,然后再通过后端获取手机号,提高了安全性。

  1. 老版流程的安全性差在哪里?

答:老版流程仅通过前端获取用户授权码code,后端不能直接获取手机号,安全风险较高。

  1. 如何选择适合自己的方法?

答:如果对安全要求较高,建议使用新版流程;如果对安全要求不高,可以使用老版流程。

  1. 在使用新版流程时,如何保证用户隐私?

答:在后端获取手机号时,应严格遵守相关法律法规,并对用户手机号进行加密存储和处理。

  1. 在使用老版流程时,如何提高安全性?

答:除了使用老版流程外,还应采取其他安全措施,如限制IP访问、使用防跨站脚本攻击技术等。